#image #opencv #contour
#изображение #opencv #контур
Вопрос:
Я пытаюсь создать контуры, которые я проверяю, попадает ли точка внутрь, но она продолжает возвращать 1, даже если это не так.
Я создаю черную маску, затем использую набор точек для вызова fillPoly с белым, который создает это изображение.
Затем я нахожу количество этого изображения, используя findContours . Ниже приведено изображение.
Это правильно. Кажется, все в порядке.
Но позже я хочу проверить, попадает ли точка внутрь контуров с помощью pointPolygonTest(белая часть на первом изображении), но это всегда возвращает 1 или 0.
for point in points
for contour in contours
if pointPolygonTest(contour, point, false) >= 0 // this always returns 1
terminate
Я думаю, проблема в том, что контуры вложены. Как я могу добиться этого?
Я хочу, чтобы pointPolygonTest игнорировал часть, которую я пересек красным, потому что они находятся за пределами контуров.
Есть идеи о том, что я могу делать неправильно?
Я могу включить код, если в этом есть необходимость, но не думаю, что это необходимо.
Комментарии:
1. Проблема с иерархией см. Этот учебник
Ответ №1:
Проблема заключалась в том, что мне нужно было проверить, есть ли у contor дочерние элементы, а также проверить, удовлетворяет ли он дочерним элементам. Например, принимая большой контур. Если pointPolygonTest возвращает 1 или 0, проверьте, есть ли у контура дочерние элементы, и если да, проверьте, удовлетворяет ли он дочерним элементам.