Mat类型与IplImage类型之间相互转换

(1)将IplImage类型转换到Mat类型

Mat::Mat(const IplImage* img, bool copyData=false);

默认情况下,新的Mat类型与原来的IplImage类型共享图像数据,转换只是创建一个Mat矩阵头。当将参数copyData设为true后,就会复制整个图像数据。

例:

IplImage* iplImg = cvLoadImage("greatwave.jpg", 1);

Mat mtx(iplImg); // IplImage* ->Mat 共享数据

// or : Mat mtx = iplImg;

 

(2)将Mat类型转换到IplImage类型

 

同样只是创建图像头,而没有复制数据。

 

例:

 

IplImage ipl_img = img; // Mat -> IplImage

 

(3)将CvMat类型转换为Mat类型

 

与IplImage的转换类似,可以选择是否复制数据。

 

Mat::Mat(const CvMat* m, bool copyData=false);

 

(4)将Mat类型转换为CvMat类型

 

与IplImage的转换类似,不复制数据,只创建矩阵头。

 

例:

 

// 假设Mat类型的imgMat图像数据存在

 

CvMat cvMat = imgMat; // Mat -> CvMat

 

转自:http://hi.baidu.com/windroc/blog/item/e5c2d3c4707fead938db4907.html

 

原文地址:https://www.cnblogs.com/test-myblog/p/3448377.html