Re: [問題] opencv關於內部輪廓contour的問題

看板C_and_CPP作者 (pei)時間15年前 (2009/11/16 15:09), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《Leeber ()》之銘言: : 使用findcontour找出內外部輪廓 : 並且用drawcontour畫出來,如下圖 : http://www.wretch.cc/album/show.php?i=lordleeber&b=2&f=1319307559&p=2 : 問題:要如何知道每個外部輪廓之內有幾個內部輪廓? : 我想做出的效果是:如果這個輪廓裡面沒有其他輪廓, : 那這個輪廓就移除掉(或不顯示)。 : 感覺opencv裡面應該有可是我又不知道怎麼用:Q : ps:我試過像是boundingrect或是contourarea這些函數 : 用的是相同的*contour,但它們都只有計算外部輪廓而已 : ------------------------------------------------------- : 另外一個問題是: : opencv的"範例:高級圖像處理初步" : 最下面畫輪廓的時候使用了 : for(;cont;cont = cont->h_next) : { : cvDrawContours( dst_contours, cont, CV_RGB(255, 0, 0), CV_RGB(255, 0, : 0), 0, 1, 8, cvPoint(0, 0) ); //繪製當前輪廓 : ............以下略 : 本來我想先拿掉drawcontour跑一次這個迴圈以求得平均面積 : 後來我再用一個for迴圈去跑drawcontour : 結果這 第二個for迴圈 會完全沒用 : 輸出圖是一片黑 : 問題:為什麼不能用第二次? : 請賜教,感謝 問題1 沒有比較好的解法,但感覺應該可以用比較苯的方式 自己針對每個輪廓逐一檢查與其他輪廓間有無包含關係...?? 問題2 比較簡單,原因是出在串列的操作問題上, 串列的開頭element要記住, 偷懶的方法可以用: CvSeq *tmpCont=cont; for(;cont;cont = cont->h_next){ //計算面積... } cont=tmpCont; for(;cont;cont = cont->h_next){ //畫輪廓... } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 116.89.128.111
文章代碼(AID): #1B0MirO- (C_and_CPP)
文章代碼(AID): #1B0MirO- (C_and_CPP)