标签:
opencv中常见的与图像操作有关的数据容器3个,这三种类型都可以代表和显示图像。
1. IplImage
2. cvMat
3. Mat
IplImage 和 CvMat 类型更侧重于“图像”,opencv 对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。
Mat 类型侧重于计算,数学性较高,opencv 对 Mat 类型的计算也进行了优化。
在opencv2.0之前,opencv是完全用C实现的,但是,IplImage类型与CvMat类型的关系类似于面向对象中的继承关系。
实际上,CvMat之上还有一个更抽象的基类----CvArr,这在源代码中会常见。
Mat 是 opencv2.0 推出的处理图像的新的数据结构,现在越来越有趋势取代之前的 cvMat 和 lplImage。
相比之下 Mat 最大的好处就是能够更加方便的进行内存管理,不再需要程序员手动管理内存的释放。
opencv2.3 中提到 Mat 是一个多维的密集数据数组,可以用来处理向量和矩阵、图像、直方图等等常见的多维数据。
Mat有3个重要的方法:
Mat mat = imread(const String* filename); // 读取图像
imshow(const string frameName, InputArray mat); // 显示图像
imwrite (const string& filename, InputArray img); //储存图像
标签:
原文地址:http://www.cnblogs.com/theBoyisNone/p/5656121.html