如何使用 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);
  1. int 参数:期望编号。行数
  2. int 参数:期望编号。列数
  3. 类型参数:需要图像的类型。
  4. 空指针参数:需要图像数据。

这解决了问题!!!!