iplimage*、mat 、CvMat相互转换

使用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的转换类似,不复制数据,只创建矩阵头。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值