IplImage与CvMat

时间:2012-12-09 02:37:58

标签: c++ c opencv matrix iplimage

我知道很多人对IplImageCvMat之间的技术差异感兴趣。 (是的,不是cv::Mat(*),而是CvMat。)所以,让我们以实际为重点来区分差异。

CvMatIplImage的重新计算版本吗? CvMat只是IplImage的包装器吗?如果是这样,为什么他们也开发CvMat

我问过这些问题是因为我在整体搜索中看到IplImagefar and away the most popular ,而且我认为它也有最多的帖子。

仍然使用IplImage 而不是更新的结构有什么好处?

(*)(我在这里也添加了c ++标签,因为很多人也使用c ++,而且有些库更喜欢IplImage。)

3 个答案:

答案 0 :(得分:4)

我建议您阅读书籍Learning OpenCV中的段落 OpenCV原始数据类型。关于这两种数据类型之间的差异,有一个很好的解释。

答案 1 :(得分:3)

根据文档,

IplImage来自英特尔图像处理库: http://opencv.willowgarage.com/documentation/basic_structures.html#iplimage

此问题还涉及CvMat结构,您可能会注意到这一结构: What is the memory structure of OpenCV's cvMat?

关于哪个更有益:虽然在各种情况下,CvMatIplImage在这里或那里可能存在轻微的速度差异 - 这取决于您想要做什么。例如。你需要在内存中共享矩阵结构吗?您是否需要高效序列化或搜索等?申请很重要。

(从理论上讲,IplImage提供的一个优势是,由于其血统,它通常与现有实施更兼容,正如您所指出的那样。)

答案 2 :(得分:3)

回答你的问题:

  

仍然使用IplImage而不是更新的有什么好处   结构

也许没有。由于某些原因它已被开发者弃用了,我猜你仍然会发现它的原因很多是因为遗留代码;因为人们仍然遵循旧的代码示例而不知道该结构已被弃用,并且因为“学习OpenCV 第一版”在opencv函数签名和数据结构方面已经过时,但仍然会有很多以opencv开头的人。

作为参考,Learning OpenCV 2nd edition应该是2013年3月,但不要引用我;)