我在使用 openCV 时遇到了一些困难,试图检测图像上的圆圈。用笔在白纸上画圆圈
我正在尝试使用
cv2.HoughCircles
,但结果非常不可靠。在灰度图像和二值图像上,该算法都无法找到圆圈。同时发现很多假货
这是例子
我尝试应用二值化并寻找轮廓。效果很好,除了任何噪音都被认为是轮廓并显着减慢了程序速度。
使用
cv2.HoughCircles
我厌倦了使用参数(param1,param2)。在参数 2 较低时,它开始检测,但同时在空白处检测到许多假冒的。参数2稍高一点时,只会检测到假圆圈。
出了什么问题?可能是我的圈子不够圈?
您的代码难以检测这些圆圈的原因是由于累加器阈值
param2
。其作用是调整代码将检测到的圆圈数量。它越低,基于最准确/置信度的检测,检测和输出的圆圈就越多。不知何故,cv2.HoughCircles
无法非常准确地检测您绘制的圆圈。如果 param2
较低,您还会有更多错误检测,这是可以清楚观察到的。
该解决方案涉及大量预处理,我不会在这里详细介绍。但是这里有一个关于
cv2.HoughCircles
的使用的漂亮主题,其中包含如何最好地使用它的技巧:使用 OpenCV(基于霍夫变换或其他功能)编写鲁棒(颜色和大小不变)圆检测
希望这有帮助!