OpenCV中Mat与IplImage互转

1)Mat转为IplImage和CvMat格式

可以用简单的等号赋值操作来进行类型转换:

Mat img(Size(320,240),CV_8UC3);
IplImage iplimg = img; //转为IplImage结构

或者用new方法获取指针:

Mat mat_img(Size(320,240),CV_8UC3);
IplImage*  iplimg = new IplImage(mat_img);

如果要转为CvMat类型,操作类似:

CvMat cvimg = img;

注意:类型转换后,IplImage和CvMat与Mat共用同一矩阵数据,而IplImage和CvMat没有引用计数功能,如果上述中的img数据被释放,iplimg和cvimg也就失去了数据,因此要牢记不可将Mat对象提前释放。
如果想完全复制数据:

Mat Img = imread("1.jpg");
IplImage ipl_image = Img;
//深拷贝只要再加一次复制数据:
IplImage *input = cvCloneImage(&ipl_image); 

2)IplImage和CvMat转为Mat格式

IplImage* iplimg = cvLoadImage("lena.jpg");
Mat mat_image_=cv::cvarrToMat(iplimg,true);//第二个参数表示是否复制

猜你喜欢

转载自blog.csdn.net/zhanghm1995/article/details/81174192
今日推荐