IplImage -> cv::Mat
IplImage* iplImg = cvLoadImage("lena.jpg"); cv::Mat cvMatImg(iplImg, 0); cv::imshow("cv::Mat Show", cvMatImg);
cv::Mat -> IplImage
IplImage iplImg2; iplImg2= IplImage(cvMatImg); cvShowImage("IplImage2 Show", &iplImg2);在第一個範例中,我們可以看到 cv::Mat 的建構子有兩個參數,比較重要的是第二個參數,如果設定成 0,代表不複製影像,也就是兩個變數的 row data 共用同個記憶體位置,header 則各自有。
接著,第二個範例,從第二行可以看到 cv::Mat 呼叫成員函式 operator IplImage(),至於行為上就沒得選擇,一定是 row data 共用同個記憶體位置,header 各自有。
底下是 operator IplImage() 的實作內容,定義在 cxmat.hpp;類別則宣告在 cxcore.hpp...
inline Mat::operator IplImage() const { IplImage img; cvInitImageHeader(&img, size(), cvIplDepth(flags), channels()); cvSetData(&img, data, (int)step); return img; }
1 則留言:
張貼留言