Python OpenCV drawContours терпит неудачу, когда я рисую только больший объект контура
Я пытаюсь нарисовать контур самого большого объекта.
Сначала я покажу изображение, рисующее все контуры:
Чтобы найти самый большой объект, я использовал этот код:
maxsize = 0
best = 0
count = 0
for cnt in contours:
if cv2.contourArea(cnt) > maxsize:
maxsize = cv2.contourArea(cnt)
best = count
count += 1
cv2.drawContours(img_rgb, contours[best], -1, (0,0,255), 2)
И результат следующий:
Почему контуры не связаны?
Заранее спасибо.
1 ответ
Решение
Посмотрите, что в вашем коде вы говорите -1
параметр функции рисовать все ваши контуры, когда вы на самом деле хотите нарисовать только best
один. Итак, вместо -1
(все) вы можете просто попросить функцию нарисовать контур, который вы хотите.
Вы можете исправить эту проблему, заменив строку:
cv2.drawContours(img_rgb, contours[best], -1, (0,0,255), 2)
с:
cv2.drawContours(img_rgb, contours, best, (0,0,255), 2)
или вы все еще можете использовать -1
, но тогда вам понадобится в качестве параметра набор точек ([]
):
cv2.drawContours(img_rgb, [contours[best]], -1, (0,0,255), 2)
Вы можете получить больше информации об этой теме на странице Документов OpenCV.