2015-02-17 95 views
3

我嘗試從圖像中去除噪音。我在圖像中有一些黑色的像素組。我使用cv :: findContours和cv :: boundingRect。我用白色填充小矩形(小矩形是圖像中的噪聲)。 但是這種方法也能找到我的白色輪廓(例如黑色圓圈的中間)。如何找到黑色像素的計數? 有沒有簡單的解決方案?如何僅以黑色查找輪廓?

+0

findContours是一個非常昂貴的方法(加,它會覆蓋原來的圖像):你可以通過調用計算簽署區域的功能檢查,你確定它不會是夠擴張+侵蝕(它是也稱爲「關閉」運營商)? http://docs.opencv.org/doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.html – Antonio 2015-02-18 01:15:00

回答

3

黑色物體的輪廓將與白色物體的輪廓(順時針與逆時針)有相反的方向。

if (contourArea(someContour,true) > 0) 
    cout << "black" << endl; 
else 
    cout << "white" << endl; 
+0

非常優雅的答案! – Antonio 2015-02-18 09:07:52

+0

謝謝,但我不是那種發明這種方法的人。幾乎每個幾何圖書館的行爲方式都是相同的,即使用相反方向的對象和對象中的空洞,並使用簽名區域來區分它們。 – 2015-02-19 10:56:33