【问题标题】:How to convert a ndarray into opencv::Mat using Boost.Python?如何使用 Boost.Python 将 ndarray 转换为 opencv::Mat?
【发布时间】: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


【解决方案1】:

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

我们必须在 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);
  1. int 参数:预期编号。行数
  2. int 参数:预期编号。列数
  3. 类型参数:需要图像的类型。
  4. Void 指针参数:需要图像数据。

这解决了问题!!!!。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 2017-12-15
    • 1970-01-01
    • 2018-04-16
    • 2011-06-28
    • 1970-01-01
    • 2018-09-04
    相关资源
    最近更新 更多