python-3.x - 如何使用 Boost.Python 将 ndarray 转换为 opencv::Mat?
问题描述
我正在读取 Python 中的图像并使用 Boost.Python 将该 numpy 数组传递给 C++ 并在ndarray
.
我需要将其转换为cv::Mat
在 OpenCV C++ 中执行操作。
我怎么做?
解决方案
最后我从文档中找到了解决方案:
我们必须像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);
- int 参数:期望没有。行数
- int 参数:期望没有。列数
- 类型参数:期望图像的类型。
- 无效指针参数:期望图像数据。
这解决了问题!!!!
推荐阅读
- javascript - 在 JSDOM 中使用滚动和宽度
- set - 编程语言中集合背后的理论是什么?
- ruby-on-rails - 在 Rails 控制器中拆分参数
- javascript - NodeJS如何将文件转换为字符串
- c# - 使用通用方法提取枚举标志以列出?
- angular - 有没有机会在角度 ng2-fan-menu 中更改图标(从本地路径 img)
- macos - 如何在 macOS 上显示正在运行的进程列表?
- ruby-on-rails - 如何在 rails-postgres 中存储每个用户提交的表单?
- javascript - Timeline Vis - 使用子组排序强制子组 2 在子组 1 之后
- checkbox - Rails 编辑表单复选框不检查布尔真值