2015-12-23 3 views
1

Я пытаюсь получить каждый круг в новом окне, однако я получаю эту ошибку; the errorУстранение OpenCV с ROI

Я не знаю, почему это происходит. Объект Rect дает нормальные значения: rect values

Код:

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"; 
} 

}

С помощью Google я нашел это: OpenCv assertion failed

Однако я не вижу, что случилось.

ответ

1

Ошибка означает, что ваш прямоугольник region выходит за пределы изображения src.

На самом деле вы построения прямоугольника с неправильными значениями, оно должно быть:

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

так 3 и 4 аргументы ширина и высота, а не координаты правой нижней точки.

Или вы можете использовать конструктор, который принимает в левом верхнем углу и нижний правый точки:

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

Ого, с прямоугольником() х +, у + ч делает работы .. – Dylan

+0

Вы можете быть более Чисто? – Miki

+0

Когда вы рисуете прямоугольник (прямоугольник (src, Point (x, y), Point (x + h, y + h), Scalar (0, 255, 0), 1, 8);) – Dylan

Смежные вопросы