[英]Convert c++ opencv IplImage imageData and widthStep to android opencv Mat
我正在使用opencv开发一个Android应用程序。 我有一个用C ++编写的算法,它使用opencv,并将其移植到java。 原始代码使用“ IplImage”,但是现在我不得不使用“ Mat”。 我设法转换了大多数代码,但以下指令却遇到了问题:
IplImage *src;
src->imageData;
src->widthStep;
我可以用吗
[JAVA - Mat]src.dataAddr() as an equivalent for [C++ - IplImage]src ->imageData
和
[JAVA - Mat]src.step1(0) as an equivalent for [C++ - IplImage]src->widthStep ?
我发现该主题固有的唯一链接是此链接,它说明了如何将“ IplImage”转换为“ Mat”,但仍使用C ++。 我不能使用javacv。
谢谢
对于深度, Mat类具有方法depth()
。
widthStep
有点棘手,因为Mat的step
长与widthStep
中的widthStep并不完全相同,但是似乎不再需要4的倍数widthStep。 这是一个有趣的答案。 也就是说, Mat类也具有获取step
的方法 。
关于imageData
,我不确定IplImage的imageData到底包含什么,但是使用Mat,您可以通过遍历矩阵并使用get(int row, int col)
类的方法从单个像素获取数据。 浏览Mat的文档 。 我相信您会得到很多选择。
在文档的开头,将讨论有关IplImage和Mat以及数据如何在Mat中与在IplImage中进行保存。 搜索
因此,Mat中的数据布局与OpenCV 1.x中的CvMat,IplImage和CvMatND类型完全兼容。
并阅读它。
还读了
这种由用户分配的数据案例的部分但非常常见的案例是从CvMat和IplImage到Mat的转换。 为此,有一些特殊的构造函数采用指向CvMat或IplImage的指针,以及指示是否复制数据的可选标志。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.