4

我知道很多人对和之间的技术差异感兴趣。(是的,不是(*),但是。)所以,让我们以实际的重点来清除差异。IplImageCvMatcv::MatCvMat

CvMatrefcounted 版本IplImage吗?CvMat只有一个包装吗IplImage?如果是这样,为什么他们也发展了CvMat

我问这些问题是因为我发现IplImage它在整体搜索中最受欢迎,而且我认为它的帖子也最多。

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

(*)(我在这里也放了 c++ 标签,因为很多人也将它与 c++ 一起使用,而且还有一些库更喜欢IplImage。)

4

3 回答 3

4

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

于 2012-12-09T09:16:19.767 回答
3

回答你的问题:

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

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

作为参考,Learning OpenCV 第 2 版应该会在 2013 年 3 月发布,但不要引用我的话;)

于 2012-12-09T15:42:43.373 回答
3

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

这个问题也解决了CvMat结构,你可能会注意到: OpenCV的cvMat的内存结构是什么?

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

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

于 2012-12-09T09:23:33.797 回答