Подтвердить что ты не робот

Закрытие кривой контура в OpenCV

Я использую OpenCV (Canny + findCountours) для поиска внешних контуров объектов. Выведенная кривая обычно почти, но не полностью закрыта. Я хотел бы закрыть его, чтобы найти область, в которой она граничит.

Как это сделать?

Понятия:

  • Расширение - примеры, которые я видел, показывают это после Canny, хотя мне кажется, что это имеет смысл делать это после findContours
  • Выпуклая оболочка - может работать, хотя я действительно пытаюсь завершить кривую
  • Упрощение формы - связанное, но не совсем то, что я хочу.
4b9b3361

Ответ 1

Немного поздно, но я просто должен был справиться с этим сам. Если вы выполняете операцию открытия (эрозию с последующей дилатацией) до обнаружения края Canny, обнаруженные вами края должны быть более непрерывными, что приводит к лучшим контурам. Этот метод представляется довольно надежным. Я упомянул об этом в еще одном сообщении и разместил образец кода как часть недавнего вопроса.

Ответ 2

Использование метода PolyLine для рисования контуров

cv2.PolyLine(img, points, is_closed=True, 255, thickness=1, lineType=8, shift=0)

Подробнее читайте в документах: http://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html

Марк ответил, если он решил вашу проблему. Если нет, то дайте мне знать.