【opencv】cvmat、IplImage、Mat之間的轉換

CvMat、IplImage轉換爲Mat

opencv3.0中 Mat(CvMat *M,bool copydata=false)這個構造函數已經不再使用,而有函數:

Mat cvarrToMat(const CvArr *arr,
            bool copyData=false,
            int coiMode=0,
            )

Cvarr可以是CvMat或IplImage類型。

Mat轉換爲IplImage類型

看到網上有這種寫法:

IplImage *iplimage;
*iplimage =m_Mat;

這時編譯會出錯,因爲指針iplimage沒有初始化,如果初始化爲NULL,運行時會出錯,可能是我c++學的不好,可能這裏可以通過new來分配內存。
這時可以用下面的方法:

IplImage iplimage =IplImage(m_Mat);

Mat轉換爲CvMat

在CvMat類中的一個構造函數:
CvMat::CvMat ( const cv::Mat & m )
其實Mat轉換爲IplImage也是使用的構造函數。

我只是在做作業時使用到了opencv,沒有深入研究,具體的可以參看這兩篇文章:
CvArr、Mat、CvMat、IplImage、BYTE轉換(總結而來)
OpenCv中cv::Mat和IplImage,CvMat之間的轉換

發佈了29 篇原創文章 · 獲贊 32 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章