首页 > 解决方案 > 如何使用 Boost.Python 将 ndarray 转换为 opencv::Mat?

问题描述

我正在读取 Python 中的图像并使用 Boost.Python 将该 numpy 数组传递给 C++ 并在ndarray.

我需要将其转换为cv::Mat在 OpenCV C++ 中执行操作。

我怎么做?

标签: python-3.xc++11boost-pythonmatnumpy-ndarray

解决方案


最后我从文档中找到了解决方案:

我们必须像numeric::array在 C++ 中一样接收 numpy 数组,并且必须执行以下步骤才能轻松地将 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. 无效指针参数:期望图像数据。

这解决了问题!!!!


推荐阅读