【发布时间】:2019-01-20 21:32:30
【问题描述】:
我正在从我的 python 接口读取图像为cv2.imread("abc.tiff",1),我想将它传递给由 pybind11 绑定的 c++ 函数。 C++ 函数需要 cv::Mat 作为输入。
现在我了解到 python 将其转换为 NumPY ,一个 NxM 3D 数组
我发现数据高度、宽度、通道分别为 5504 8256 3。
任何帮助我如何找到它的解决方案。
同样,我需要将 cv::Mat 传递给 Python 接口
【问题讨论】:
-
AFAIK,没有标准的方法。你必须使用 cv::Mat 吗?例如,您可以在 C++ 而不是 python 中调用 cv::imread,只需将文件名字符串传递给 C++ 而不是矩阵。在返回端,您可以将 cv::Mat 作为数组返回,并在界面中从中构造一个 numpy ndarray。
-
谢谢@mahesh; main req 将 cv::Mat 从 1 pybind11 接口传递到另一个接口。你能给我一些想法,我如何从 python 发送 numpy ndarray,并将其传输到 c++ 中的 cv::Mat
-
您可以直接使用缓冲区。因此,将 numpy 数组重塑为向量,并将一维数组与维度一起传递给 C++ 接口。在 C++ 代码中,还使用从 python 传递的维度将一维数组转换为 cv::Mat。将过程反转到另一个方向(C++ 到 python)。您可能会发现这很有帮助:github.com/yati-sagade/opencv-ndarray-conversion/blob/master/…
标签: python numpy c++11 pybind11 opencv-mat