Python OpenCV рисует контур только на внешней границе

При рисовании контура с использованием OpenCV drawContours границы нарисованы по центру от контура, я хочу нарисовать границу только снаружи контура.

Это изображение (взятое из документации SketchUp) объясняет это лучше всего:

drawContours рисует контур, как в первом круге (контур находится в середине нарисованной границы). Мне нужно иметь границу только снаружи контура, как в последнем круге.

У кого-нибудь есть идеи относительно того, как мне добиться такого поведения?

Благодарю.

2 ответа

Используйте код как

  _ret, contours, hierarchy = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 
  cv2.drawContours(img,contours , -1, (255,0,0), 1)

здесь cv2.RETR_EXTERNAL выдает только внешний обнаруженный контур.

Предполагая, что цвет внутреннего ядра всегда однороден, и вы заранее знаете значение цвета ядра, мы можем просто сделать это следующим образом:

#First you draw the contour on both the sides of the border.
contour_id = 0
border_thickness = 10
border_color = (185, 115, 72)
cv2.drawContours(img, contours, contour_id, border_color, border_thickness)

#Now you again draw contour but with thickness = -1 and color = Core color
border_thickness = -1
core_color = (225, 141, 98)
cv2.drawContours(img, contours, contour_id, core_color, border_thickness)
Другие вопросы по тегам