如何只在黑色颜色中找到轮廓?

5

我试图从图像中去除噪点。图像中有一些黑色像素组。我使用了cv::findContours和cv::boundingRect函数。并用白色填充小矩形(小矩形是图像中的噪声)。但这种方法也会找到我的白色轮廓(例如黑色圆形中间)。如何找到黑色像素的轮廓?是否有简单的解决方案?


findContours是一个非常耗费计算资源的方法(而且会覆盖原始图像):您确定不使用膨胀和腐蚀(也称为“闭运算”)就足够了吗?http://docs.opencv.org/doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.html - Antonio
1个回答

6

黑色物体的轮廓方向与白色物体的轮廓方向相反(顺时针 vs 逆时针)。您可以通过调用计算有符号面积的函数来检查它:

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

谢谢,但我并不是发明这种方法的人。几乎每个几何库都是以相同的方式行事,即对于对象和对象中的孔使用相反的方向,并使用有符号面积来区分它们。 - Michael Burdinov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接