對於上圖的二值化圖像,要去除左下角和右上角的噪點,方法:使用opencv去掉黑色面積較小的連通域。
代碼
分析:對於上圖來說連通域共有:
這麼七個,我們的目標是去除2號和3號連通域,
程序中語句 tmparea = fabs(cvContourArea(contour));可以得到當前連通域的面積,當此面積小於閾值時對其填充爲白色。
rect = cvBoundingRect(contour,0); 得到的是框住連通域的最小矩形,對矩形中的黑色部分將其填充爲白色,但是這樣的話,連通域6和4兩個連通域被填充成了白色的矩形,這顯然不符合我們的要求,這樣就要判斷此連通域是黑色聯通域還是白色連通域,採用的方法是測試矩形的中心點,如果其爲黑色,則認爲此連通域是黑色連通域,否則爲白色聯通域,對於黑色聯通域我們對其進行白色填充處理,對於白色聯通域則保持不變。