我只想仔细检查我设置的ROI是否是正确的ROI。 因此,我希望能够将ROI输出为图像。 ROI使用cvRect作为第二个参数,我真的不知道如何将该区域转换为图像。 我希望能够使用cvRect中的值来确定最终图像。这可能吗?
cvSetImageROI(frame,cvRect((*pt[0]).x,(*pt[0]).y,abs(ROIwidth),abs(ROIheight)));
答案 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
请注意,从IplImage
到cv::Mat
的转换是直接使用:
IplImage* img = cvLoadImage("my_img.jpg", 1);
cv::Mat new_img(img); // convert IplImage* -> Mat