语言:C++(
Opencv版本:Opencv3.4.1
1、截取矩形的ROI:
/* cut off each piece */
Rect piece_ROI(Point(center.x-piece_roi_size/2,center.y-piece_roi_size/2),Point(center.x+piece_roi_size/2,center.y+piece_roi_size/2));
Mat piece_cutoff = piece_image(piece_ROI);
2、截取圆形的ROI:
这里涉及到截取一个不是矩形的区域,不管是截取一个圆形、椭圆,或者是截取一个不规则多边形,其方法都是使用contour(轮廓)来指定ROI。
比如,要截取一个多边形的ROI区域:
Mat dst;
Mat roi = Mat::zeros(img.size(),CV_8U);
vector<vector<Point>> contour;
vector<Point> pts;
pts.push_back(Point(30,45));
pts.push_back(Point(100,15));
pts.push_back(Point(300,145));
pts.push_back(Point(330,240));
pts.push_back(Point(50,250));
contour.push_back(pts);
drawContours(roi,contour,0,Scalar::all(255),-1);
img.copyTo(dst,roi);
imshow("roi",roi);
imshow("img",img);
imshow("dst",dst);
如果要截取一个圆形区域,方法相似:
Mat dst = Mat::zeros(image.size(

本文探讨了在C++中使用OpenCV 3.4.1进行矩形和非矩形ROI(如圆形、椭圆和自定义多边形)的截取方法,包括矩形ROI的简单操作和利用轮廓处理复杂形状的实例。
最低0.47元/天 解锁文章
27万+

被折叠的 条评论
为什么被折叠?



