2013-06-23 54 views
0

我正在處理涉及對象分割的計算機圖像處理項目,我找到了輪廓,但我只想繪製其中的一部分,例如,第一個用於進一步填充顏色。不幸的是,我不斷收到此錯誤: TypeError:參數'contour'的期望CvSeq。選擇等高線錯誤

下面是發生錯誤的代碼片段。

mem=cv.CreateMemStorage() 
nc=cv.FindContours(img_th,mem,cv.CV_RETR_LIST,cv.CV_CHAIN_APPROX_SIMPLE,(0,0)) 
c=nc[1] 
cv.DrawContours(img_adth,c,cv.CV_RGB(255,0,0),cv.CV_RGB(0,255,0),2,2,-1) 

回答

0

您從繪圖功能中收到錯誤。

我從來沒有使用opencv python API,但我想不像C++,C和python API有不同的表示輪廓的風格。

在C++中,您可以選擇一個輪廓ID並僅繪製該輪廓。如果要繪製所有輪廓,請輸入id = -1。

在C/Python中,您可以在矢量中「指出」輪廓以僅繪製該輪廓。所以輪廓(nc)是指向第一個輪廓的指針。如果你想繪製所有的輪廓,你使用一段時間(輪廓!= null)循環。

爲了更清楚起見,我改變了你的代碼,嘗試使用這個。我不確定,所以讓我知道如果這個工程..

... 
c = nc.next //until you select exact one 
cv.DrawContours(img_adth,c,cv.CV_RGB(255,0,0),cv.CV_RGB(0,255,0),2,2,-1)