输出cvRect作为图像

时间:2013-04-22 14:50:34

标签: c opencv

我只想仔细检查我设置的ROI是否是正确的ROI。 因此,我希望能够将ROI输出为图像。 ROI使用cvRect作为第二个参数,我真的不知道如何将该区域转换为图像。 我希望能够使用cvRect中的值来确定最终图像。这可能吗?

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

2 个答案:

答案 0 :(得分: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 :(得分: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

请注意,从IplImagecv::Mat的转换是直接使用:

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