天天看點

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類型,操作類似:

注意:類型轉換後,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);//第二個參數表示是否複制