C++ OpenCV断言因ROI而失败

C++ OpenCV断言因ROI而失败,c++,opencv,C++,Opencv,我试图在一个新窗口中获得每个圆,但是我得到了这个错误; 我不知道为什么会这样。Rect对象提供正常值: 代码: void扫描圆(int x,int y,int h,Mat src,int rad){ 试一试{ Rect区域=Rect(x,y,x+h,y+h); Mat roi=src(region.clone(); } 捕获(…){ cout该错误意味着您的矩形区域超出图像src的范围 事实上,您正在用错误的值构造矩形,它应该是: Rect region(x, y, h, h); 因为第三

我试图在一个新窗口中获得每个圆,但是我得到了这个错误;

我不知道为什么会这样。Rect对象提供正常值:

代码:

void扫描圆(int x,int y,int h,Mat src,int rad){
试一试{
Rect区域=Rect(x,y,x+h,y+h);
Mat roi=src(region.clone();
}
捕获(…){

cout该错误意味着您的矩形
区域超出图像
src
的范围

事实上,您正在用错误的值构造矩形,它应该是:

Rect region(x, y, h, h);
因为第三个和第四个参数是宽度和高度,而不是右下角点的坐标

也可以使用接受左上角和右下角点的构造函数:

Rect region(Point(x,y), Point(x+h, y+h));

当你画一个矩形(矩形(src,点(x,y),点(x+h,y+h),标量(0,255,0),1,8);)是的,这和使用构造函数是一样的:
Rect区域(点(x,y),点(x+h,y+h));
。你也可以像这样画:
矩形(src,Rect(x,y,h),…
Rect region(Point(x,y), Point(x+h, y+h));