天天看點

Mat與IplImage和CvMat之間的互相轉換

1、Mat轉換為IplImage和CvMat

Mat img(size(300,300,CV_8UC3);

……

IplImage iplimg=img; //  用指派操作進行類型轉換

遇到 void myiplimageFunction(&iplimg,……);  //利用取位址作為參數。

同理

要轉化成CvMat類型

CvMat  cvmatimg=img;

注意:類型轉化完成後,不能提前釋放img,否則iplimg和cvmatimg會失去資料。

2、IplImage 和CvMat格式轉換成Mat

Mat類有兩種構造函數,可以實作IPLImage和CvMat到Mat的轉換。這兩個函數都有一個參數copyData。如果copyData為false,

Mat将于IplImage或CvMat共同使用一個矩陣;如果為true,Mat會重新申請記憶體,将IplImage或者CvMat的資料複制到Mat資料區。

Mat::Mat(const CvMat* m,bool copyData=false)

Mat::Mat(const IplImage*img,bool copyData=false)

IplImage *iplimg=cvLodadImage("Lena,jpg");

Mat im(iplimg,true);