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);//第二個參數表示是否複制