[問題] OpenCV中的cvCanny與cvFindContours

看板C_and_CPP (C/C++)作者 (微醺時光)時間14年前 (2011/07/22 04:10), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/1
通常找邊界習慣上常使用cvCanny後,再用cvFindContours來得到邊界座標。 現在遇到一個問題, 假設我在黑色背景上有一個白色的正方形, 先作cvCanny後剩下外框,再使用cvFindContours後得到的卻是兩條邊界。 將它畫出來是兩條幾乎重疊的線。 讓我覺得cvCanny處理過的邊界寬度可能不是只有一個像素, 我的想法是cvCanny的核心是sobel,而sobel的概念像是求兩邊的色差梯度 因此在黑白相接處,黑色背景的內側與白色方形的外側,理當都要較大梯度值 所以在作完cvCanny後都會被保留下來,因此事實上邊界寬度將是兩個像素 造成像操場跑道一樣有內外圈之分,所以就找到兩條邊界 請問一下我這個觀念對嗎? 不過這種情形也不是每張圖都有,所以讓我很困惑。 所以想問大家有沒有遇過這情況, 有的話大家都怎麼解決,感覺我所知道的濾波都都用不上 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.40.86.209

07/22 09:30, , 1F
canny跟sobel不一樣的東西 cvFindContours 不用先做邊緣偵
07/22 09:30, 1F

07/22 09:30, , 2F
測 先把雜訊去掉就好
07/22 09:30, 2F

07/22 12:45, , 3F
我知道不一定要先做canny,我想知道的是如果是cvFindContour
07/22 12:45, 3F

07/22 12:46, , 4F
去找canny後的圖片,為什麼會有這種情況
07/22 12:46, 4F

07/22 13:04, , 5F
canny的運算使用四個方向的遮罩作convolution, 在opencv裡
07/22 13:04, 5F

07/22 13:05, , 6F
它是拿sobel當遮罩來算canny
07/22 13:05, 6F
文章代碼(AID): #1EA8UXcg (C_and_CPP)
文章代碼(AID): #1EA8UXcg (C_and_CPP)