关于c ++:OpenCV Assertion因ROI而失败

OpenCV Assertion failed with ROI

我试着让每个圆都在一个新窗口中,但是我得到了这个错误;误差

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

代码:

1
2
3
4
5
6
7
8
void scanCircle(int x, int y, int h, Mat src, int rad) {
try {
    Rect region = Rect(x, y, x + h, y + h);
    Mat roi = src(region).clone();
}
catch (...) {
    cout <<"Error";
}

}

有了谷歌,我发现了一个:opencv断言失败

但是我不知道怎么了。


错误意味着矩形region超出了图像src的边界。

事实上,你用错误的值构造矩形,应该是:

1
Rect region(x, y, h, h);

因为第3和第4个参数是宽度和高度,而不是右下角的坐标。

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

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