【发布时间】:2019-03-26 05:53:12
【问题描述】:
我正在用 Python 读取图像并使用 Boost.Python 将该 numpy 数组传递给 C++,并在 ndarray 中接收它。
我需要将其转换为 cv::Mat 以在 OpenCV C++ 中执行操作。
我该怎么做?
【问题讨论】:
标签: python-3.x c++11 boost-python mat numpy-ndarray
我正在用 Python 读取图像并使用 Boost.Python 将该 numpy 数组传递给 C++,并在 ndarray 中接收它。
我需要将其转换为 cv::Mat 以在 OpenCV C++ 中执行操作。
我该怎么做?
【问题讨论】:
标签: python-3.x c++11 boost-python mat numpy-ndarray
最后我从文档中找到了解决方案:
我们必须在 C++ 中以 numeric::array 的形式接收 numpy 数组,并且必须执行以下步骤才能轻松地将 numpy 有效地转换为 cv::mat。
void* img_arr = PyArray_DATA((PyObject*)arr.ptr());
我们需要将此 void ptr 传递给 cv::Mat 构造函数,并需要其他参数。
Mat image(rows, cols , CV_8UC3, img_arr);
这解决了问题!!!!。
【讨论】: