1. 程式人生 > >OpenCV中Mat和IplImage之間的相互裝換(OpenCV2.0和OpenCV3.0)

OpenCV中Mat和IplImage之間的相互裝換(OpenCV2.0和OpenCV3.0)

Mat是OpenCV和C++介面的矩陣類,IplImage是OpenCV和C語言介面的結構體。

Mat讀取顯示用的是imread、imshow等,IplImage讀取顯示用的是cvLoadImage()、cvShowImage()


有時候會涉及到兩者之間的轉換,下面詳細見介紹一下兩者之間的轉換:

IplImage->mat:

將IplImage轉換為mat,OpenCV3.0版本以上,需要用到cvarrToMat,具體方法如下程式碼所示:

IplImage* img = cvLoadImage("1.jpg", 1);
Mat mat = cvarrToMat(img);  //轉換IplImage*->Mat,這裡只是複製資訊頭,並沒有複製矩陣

//複製矩陣內容,再建立mat類,在mat類與mat之間複製
Mat matTemp;
matTemp = mat.clone()   //複製矩陣內容

OpenCV3.0版本以下的轉換為:

IplImage* img = cvLoadImage("1.jpg", 1);
Mat mtx(img);   //裝換IplImage*->Mat

Mat->IplImage:

Mat img = imread("1.jpg");
IplImage* IpImg;
IpImg = &IplImage(img);   //轉換為Mat->IplImage

//複製矩陣內容
IplImage* TmpIpImg;
TmpIpImg = cvCloneImage(IpImg);   //複製矩陣內容