2013-05-02 160 views
1

我有在OpenCV的輪廓的問題,主要是與他們是如何處理的。參考看看這個教程:OpenCV的輪廓去除

http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/moments/moments.html#moments

那是給我停下來的部分是,當我嘗試opbject他們宣稱的,我無法弄清楚如何從集合中刪除的項目不中斷與輪廓互動一切。這些教程中的對象聲明都包含在那些沒有在下面點擊它的人。現在

vector<vector<Point> > contours; 
vector<Vec4i> hierarchy; 

,我可能已經錯過了這個地方OpenCV的文檔中,但如何從安全返回輪廓列表中刪除的輪廓?

通過安全我的意思是我想一個簡單的

contours.erase(contours.begin()+15); 
這導致與被它返回的教主項目運行時間的問題

,但是當我包括

hierarchy.erase(hierarchy.begin()+15); 

我損失超過一個輪廓,所以我對於如何從集合中移除單個輪廓返回給我感到不知所措。

編輯:

基於我有我如何能得到的OpenCV返回我一系列的輪廓,我可以很容易地從去除不必要的輪廓的反應如何? 乾杯

+0

您使用的是有層次的輪廓和你所期望的輪廓是不相交?通常輪廓都是相互關聯的。這就是爲什麼如果你刪除一個,那麼其他人會被刪除。你必須找到另一種方式來管理可枚舉的斑點。就我而言,它通常涉及大量使用drawContours。 – 2013-05-03 02:36:21

+0

@Thomas我想看看你的方法的例子,只是這樣我就可以得到的東西的工作,我會擔心以後做到這一點的最好辦法。 – SZman 2013-05-06 23:10:23

回答

0

如果您使用的是層次結構,以除去輪廓的最好辦法是在層次中的值設置爲某些標記值。

所以你走所有輪廓步行層次結構中,在輪廓需要被「刪除」,然後設置索引的層次爲0(或-1)或東西。

記住層次也有孩子的輪廓,如果你選擇這個選項。