您的位置:首页 > 运维架构

iplimage*、mat 、CvMat相互转换

2017-03-29 00:36 423 查看
使用opencv做图像处理时,iplimage*与mat互转用的特别多,所以就整理了一下:

(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;
方法二:


IplImage * ipl = …;

cv::Mat m = cv::cvarrToMat(ipl); // default additional arguments: don’t copy data.



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

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

例:

Mat img=imread(1.jpg);
qImg = IplImage(img); // Mat -> IplImage


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

Mat img=imread(1.jpg);

IplImage* qImg;

qImg = &IplImage(img);

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

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

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


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

与IplImage的转换类似,不复制数据,只创建矩阵头。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息