1
我只是想仔細檢查一下我設置的ROI是否是正確的ROI。 因此,我希望能夠將ROI輸出爲圖像。 ROI使用cvRect作爲第二個參數,我不知道如何將該區域轉換爲圖像。 我希望能夠使用cvRect中的值來確定最終圖像。這可能嗎?輸出cvRect作爲圖像
cvSetImageROI(frame,cvRect((*pt[0]).x,(*pt[0]).y,abs(ROIwidth),abs(ROIheight)));
我只是想仔細檢查一下我設置的ROI是否是正確的ROI。 因此,我希望能夠將ROI輸出爲圖像。 ROI使用cvRect作爲第二個參數,我不知道如何將該區域轉換爲圖像。 我希望能夠使用cvRect中的值來確定最終圖像。這可能嗎?輸出cvRect作爲圖像
cvSetImageROI(frame,cvRect((*pt[0]).x,(*pt[0]).y,abs(ROIwidth),abs(ROIheight)));
您可以將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);
用我推薦用於初學者的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
請注意,可以寫'PT [0] - > x'代替'(* PT [0])x。 '。 – zakinster 2013-04-22 15:01:15