我是 OpenCV 的新手。最近,我很难找到从 Mat 转换为 Array 的 OpenCV 函数。我研究了 OpenCV API 中可用的 .ptr 和 .at 方法,但我无法获得正确的数据。我想直接从 Mat 转换为 Array(如果可用,如果不是 Vector)。我需要 OpenCV 函数,因为代码必须在 Vivado HLS 中进行高级合成。请帮忙。
原文由 Main 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
如果
Mat mat
的内存是连续的(它的所有数据都是连续的),可以直接把它的数据拿到一维数组中:否则,您必须逐行获取其数据,例如二维数组:
更新: 如果您使用
std::vector
会更容易,您可以这样做:ps:对于
cv::Mat
其他类型,比如CV_32F
,你应该这样做:UPDATE2: 对于OpenCV Mat数据的连续性,可以总结如下:
imread()
、clone()
或构造函数创建的矩阵将始终是连续的。请查看 此代码片段 以进行演示。