opencv 刪除二值化圖像中面積較小的連通域

對於上圖的二值化圖像,要去除左下角和右上角的噪點,方法:使用opencv去掉黑色面積較小的連通域。

代碼


 
分析:對於上圖來說連通域共有:

這麼七個,我們的目標是去除2號和3號連通域,

程序中語句 tmparea = fabs(cvContourArea(contour));可以得到當前連通域的面積,當此面積小於閾值時對其填充爲白色。

rect = cvBoundingRect(contour,0); 得到的是框住連通域的最小矩形,對矩形中的黑色部分將其填充爲白色,但是這樣的話,連通域6和4兩個連通域被填充成了白色的矩形,這顯然不符合我們的要求,這樣就要判斷此連通域是黑色聯通域還是白色連通域,採用的方法是測試矩形的中心點,如果其爲黑色,則認爲此連通域是黑色連通域,否則爲白色聯通域,對於黑色聯通域我們對其進行白色填充處理,對於白色聯通域則保持不變。

發佈了11 篇原創文章 · 獲贊 40 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章