Закрытие кривой контура в OpenCV
Я использую OpenCV (Canny + findCountours) для поиска внешних контуров объектов. Выведенная кривая обычно почти, но не полностью закрыта. Я хотел бы закрыть его, чтобы найти область, в которой она граничит.
Как это сделать?
Понятия:
- Расширение - примеры, которые я видел, показывают это после Canny, хотя мне кажется, что это имеет смысл делать это после findContours
- Выпуклая оболочка - может работать, хотя я действительно пытаюсь завершить кривую
- Упрощение формы - связанное, но не совсем то, что я хочу.
Ответы
Ответ 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
Марк ответил, если он решил вашу проблему. Если нет, то дайте мне знать.