【发布时间】:2013-05-20 01:29:32
【问题描述】:
我真的不知道下一个项目要使用什么: 图像?还是 Cv::Mat?
知道我想要:
- 更好的性能
- 对于使用的不同工具(垫子的乘法、不同的计算/图像处理工具......)有相当大的速度响应
- 更少使用内存
如果是这样,我应该将我以前的所有 IplImage 都更改为 cv::Mat 吗?
【问题讨论】:
标签: c++ c visual-studio-2010 opencv image-processing
我真的不知道下一个项目要使用什么: 图像?还是 Cv::Mat?
知道我想要:
如果是这样,我应该将我以前的所有 IplImage 都更改为 cv::Mat 吗?
【问题讨论】:
标签: c++ c visual-studio-2010 opencv image-processing
它们都不比另一个更快或更轻。至少以任何可衡量的方式。 (也许 cv::Mat 比 IplImage 多 4 个字节,与将图像数据存储到其中所需的 12.000.000 个字节相比,这不会造成伤害)
它们都没有提供更快的计算,也没有更多的工具来处理它。
他们提供的只是一个指向一些数据的指针,以及一些关于图像宽度、高度、步长和类型的额外信息。
但是 cv::Mat(以及 C++ 接口的其余部分)使用起来更容易、更安全。您可以在更短的时间内编写更少的代码。您需要修复的错误更少。这使您可以专注于在速度和内存消耗方面改进算法。
对于这个事实,是的,cv::Mat 更快更轻——如果你好好利用它的话。
另外,检查这个类似的OpenCV: C++ and C performance comparison
【讨论】: