Невозможно определить вогнутость объекта в OpenCV - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь обнаружить выпуклые пятиугольники на изображении, используя OpenCV.Я использую следующее изображение:

enter image description here

Сначала я нахожу контуры на изображении, а затем делаю это:

approx = cv2.approxPolyDP(c, 0.04 * perimeter, True)
isPentagon = len(approx) == 5

Когда я запустил это на изображении, я получил такой результат:

enter image description here

Эта белая часть в изображении обнаруживается.Я думал, что проверка вогнутости решит это.Вот что я попытался сделать:

isPentagon = len(approx) == 5 and cv2.isContourConvex(c)

Однако для всех пятиугольников, которые я пробовал, isContourConvex вернул False.Я не уверен почему.Я пробовал и другие изображения, и то же самое произошло.Переменная c является контуром.

Есть ли способ исправить это?Может быть, лучший способ проверить правильность многоугольника?

1 Ответ

0 голосов
/ 25 марта 2019

Проблема заключалась в том, что я передавал исходный контур, найденный cv2.findContours, в cv2.isContourConvex.Этот оригинальный контур имеет массу точек, некоторые из которых придают форме вогнутую характеристику.

Чтобы это исправить, мне пришлось позвонить cv2.isContourConvex(approx).Это позволит оценить приближение пятиугольника, который имеет ровно пять сторон и пять вершин.Хотя позже я нарисовал начальный контур, оценка функции contourConvex в приближении дала правильный результат.

...