1

設定した ROI が正しい ROI であることを再確認したいだけです。したがって、ROIを画像として出力できるようにしたいと考えています。ROI は cvRect を 2 番目の引数として使用しますが、その領域を画像に変換する方法がよくわかりません。cvRect の値を使用して最終的な画像を決定できるようにしたいと考えています。これは可能ですか?

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

2 に答える 2

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);
于 2013-04-22T14:59:49.097 に答える
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
于 2013-04-22T15:16:21.680 に答える