2014-12-25 2 views
2

Я пытаюсь нарисовать контур самого большого объекта.Python Opencv drawContours терпит неудачу, когда я рисую только больший объект контура

Сначала я покажу изображение рисунка всех контуров:

All contours objects

Чтобы найти самый большой объект, я использовал этот код:

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) 

И результат следующий: Contours of biggest object

Почему контуры не подключены?

Заранее спасибо.

ответ

2

Посмотрите, что в коде, который вы указываете параметром -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 Docs page

Смежные вопросы