OpenCV中Mat和IplImage之間的相互裝換(OpenCV2.0和OpenCV3.0)
阿新 • • 發佈:2018-11-28
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); //複製矩陣內容