(1)将IplImage类型转换到Mat类型spa
[cpp] view plain copy print?.net
Mat::Mat(const IplImage* img, bool copyData=false); code
Mat::Mat(const IplImage* img, bool copyData=false);
默认状况下,新的Mat类型与原来的IplImage类型共享图像数据,转换只是建立一个Mat矩阵头。当将参数copyData设为true后,就会复制整个图像数据。blog
例:ip
[cpp] view plain copy print?get
IplImage* iplImg = cvLoadImage("greatwave.jpg", 1); class
Mat mtx(iplImg); // IplImage* ->Mat 共享数据 im
// or : Mat mtx = iplImg; 数据
IplImage* iplImg = cvLoadImage("greatwave.jpg", 1); Mat mtx(iplImg); // IplImage* ->Mat 共享数据 // or : Mat mtx = iplImg;
(2)将Mat类型转换到IplImage类型img
一样只是建立图像头,而没有复制数据。
例:
[cpp] view plain copy print?
IplImage* ipl_img;
*ipl_img = mat; // Mat -> IplImage
IplImage* ipl_img; *ipl_img = mat; // Mat -> IplImage
(3)将CvMat类型转换为Mat类型
与IplImage的转换相似,能够选择是否复制数据。
[cpp] view plain copy print?
Mat::Mat(const CvMat* m, bool copyData=false);
Mat::Mat(const CvMat* m, bool copyData=false);
(4)将Mat类型转换为CvMat类型
与IplImage的转换相似,不复制数据,只建立矩阵头。
例:
[cpp] view plain copy print?
// 假设Mat类型的imgMat图像数据存在
CvMat cvMat = imgMat; // Mat -> CvMat