Re: [問題] opencv關於內部輪廓contour的問題
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):