如何使用 Boost.Python 将 ndarray 转换为 opencv::Mat?
How to convert a ndarray into opencv::Mat using Boost.Python?
我正在 Python 中读取图像并使用 Boost.Python 将该 numpy 数组传递给 C++ 并在 ndarray
中接收它。
我需要将其转换为 cv::Mat
才能在 OpenCV C++ 中执行操作。
我该怎么做?
最后我从文档中找到了解决方案:
我们必须在 C++ 中将 numpy 数组接收为 numeric::array
,并且必须执行以下步骤以轻松地将 numpy 有效地转换为 cv::mat
。
void* img_arr = PyArray_DATA((PyObject*)arr.ptr());
并且我们需要将此 void ptr 传递给 cv::Mat 构造函数,并需要其他参数。
Mat image(rows, cols , CV_8UC3, img_arr);
- int 参数:期望编号。行数
- int 参数:期望编号。列数
- 类型参数:需要图像的类型。
- 空指针参数:需要图像数据。
这解决了问题!!!!
我正在 Python 中读取图像并使用 Boost.Python 将该 numpy 数组传递给 C++ 并在 ndarray
中接收它。
我需要将其转换为 cv::Mat
才能在 OpenCV C++ 中执行操作。
我该怎么做?
最后我从文档中找到了解决方案:
我们必须在 C++ 中将 numpy 数组接收为 numeric::array
,并且必须执行以下步骤以轻松地将 numpy 有效地转换为 cv::mat
。
void* img_arr = PyArray_DATA((PyObject*)arr.ptr());
并且我们需要将此 void ptr 传递给 cv::Mat 构造函数,并需要其他参数。
Mat image(rows, cols , CV_8UC3, img_arr);
- int 参数:期望编号。行数
- int 参数:期望编号。列数
- 类型参数:需要图像的类型。
- 空指针参数:需要图像数据。
这解决了问题!!!!