2013-04-22 85 views
1

我只是想仔細檢查一下我設置的ROI是否是正確的ROI。 因此,我希望能夠將ROI輸出爲圖像。 ROI使用cvRect作爲第二個參數,我不知道如何將該區域轉換爲圖像。 我希望能夠使用cvRect中的值來確定最終圖像。這可能嗎?輸出cvRect作爲圖像

cvSetImageROI(frame,cvRect((*pt[0]).x,(*pt[0]).y,abs(ROIwidth),abs(ROIheight))); 
+0

請注意,可以寫'PT [0] - > x'代替'(* PT [0])x。 '。 – zakinster 2013-04-22 15:01:15

回答

3

您可以將ROI複製到臨時緩衝區並保存該緩衝區。

IplImage* roi = cvCreateImage(cvSize(abs(ROIwidth),abs(ROIheight)),frame->depth, frame->nChannels); 

cvSetImageROI(frame,cvRect((*pt[0]).x,(*pt[0]).y,abs(ROIwidth),abs(ROIheight))); 

cvCopy(frame,roi); 

cvResetImageROI(frame); 

cvSaveImage("roi.jpg",roi); 

cvReleaseImage(&roi); 
1

用我推薦用於初學者的opencv C++ API!

cv::Mat img; // my pre-loaded image 
cv::Rect roi; // roi position (x,y,width,height) 
cv::Mat img_roi(img, roi); // only create header = no copy! 
cv::imwrite("my_roi.png",img_roi); // save 

注意從IplImage其轉化爲cv::Mat是直接使用:

IplImage* img = cvLoadImage("my_img.jpg", 1); 
cv::Mat new_img(img); // convert IplImage* -> Mat