我正在尝试使用霍夫圆检测方法来找到所有的圆,如图所示(如图1和2所示)。最初,我使用canny和findContour方法(如图3所示)。我仍然不确定哪种方法更合适。canny和findContour方法的问题是它没有找到所有的圆,也没有得到很多噪音。但是,当使用霍夫圆检测时,圆有时会捕获外围而不是内部,如图2所示。
canny + findcontour方法可以很好地找到圆轮廓,但是会产生很多噪点,而Hough圆效果很好,但是圆有时会与外圆融合。
Hough circle
Hough circle-zoomed in
canny + findcontour method
最佳答案
我认为如果对图像进行预处理可以得到更好的结果。首先应用Otsu阈值,如果效果不佳,请使用手动值作为阈值。之后,使用cv.erode()函数获得清晰的边界。然后尝试应用霍夫圆变换。
如果性能不是问题,那么另一有趣的事情是查看整体嵌套边缘检测,然后应用霍夫圆变换。
还可以看看以下内容:
https://www.learnopencv.com/filling-holes-in-an-image-using-opencv-python-c/
https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_watershed/py_watershed.html
关于opencv - OpenCV Hough检测找到内圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61830129/