OpenCV中IplImage和Mat间的相互转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV中IplImage和Mat间的相互转换相关的知识,希望对你有一定的参考价值。

OpenCV中做图像处理经常用到IplImage和Mat间的相互转换。

首先,cv::Mat是opencv2.0中的数据类型;IplImage是opencv1.0中的类型,两种类型并不相同。

1. IplImage -> cv::Mat
IplImage* pImg = cvLoadImage("lena.jpg");
cv::Mat img(pImg,0); //第二个参数控制是否复制图像,0是不复制图像,也就是pImg和img的data共用内存,header各自有

 

2. cv::Mat -> IplImage
IplImage* pImg = cvLoadImage("lena.jpg");
cv::Mat img(pImg,0); //img拿到pImg的data


IplImage qImg;
qImg = IplImage(img); //不复制图像,所以qImg.imageData就是指向pImg->imageData
or

IplImage *qImg;
qImg = &IplImage(img); //不复制图像,所以qImg.imageData就是指向pImg->imageData

以上是关于OpenCV中IplImage和Mat间的相互转换的主要内容,如果未能解决你的问题,请参考以下文章

opencv中Mat与IplImage,CVMat类型之间转换

opencv:将 Mat 转换为 IplImage 问题

opencv编程中cvMat到Mat如何进行数据转换?

尝试在 OpenCv 中使用来自 Mat 对象的转换后的 IplImage 对象时出错

从 Mat 元素到 IplImage 的 opencv 转换 *

opencv:将iplimage转换为mat后出错