2014-12-25 60 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