繁体   English   中英

将C ++ opencv IplImage imageData和widthStep转换为android opencv Mat

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM