2015-02-17 130 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