在使用霍夫圆时,我不太了解如何为霍夫圆定义参数?我什至都不知道它们表示什么参数。我所知道的image
:它是源图像method
:它是检测圆的过程(除了霍夫梯度以外,没有其他方法)minDist
:是最小值。圆的两个中心之间的距离minRadius
:圆的最小半径maxRadius
:这是最大半径
我什至不了解其余的参数。有人可以帮我解释一下吗?
最佳答案
好问题!
这是来自opencv-python教程的HoughCircles()函数的示例。让我们详细看一下
HoughCircles(image, method, dp, minDist[, param1[, param2[, minRadius[, maxRadius]]]]])
图片
这是您要从中检测圆的输入图像。强烈建议对图像进行灰度处理,因为HoughCircles()使用Canny()函数检测图像中的边缘。
方法
这是用于查找圆的数学公式。 HoughCircle中唯一可用的公式是cv2.HOUGH_GRADIENT,因此您别无选择,只能使用它。
dp
查看此答案here。如果您听不懂,请放心。 Hough Transform是宽泛的子对象,如果您想了解此变量的含义,建议您更详细地研究它,但是无论如何,此变量应在0到2之间,并且是double类型,因此请尝试使用0.6或1.3这样的数字。
minDist
这是要检测的圆心之间的最小距离。您的图像中的圆圈有多近?您是否希望该功能检测紧密相连的圆或圆之间的距离?
param1和param2
如前所述,HoughCircles()在内部使用Canny()函数。这些参数指定您要多么积极地检测边缘。
Canny运算符中使用的阈值器使用一种称为
“磁滞”。大多数阈值设定者使用单个阈值限制,即
表示如果边值在此值上下波动,则直线
将显示为损坏(通常称为``条纹'')。磁滞现象
通过设置上下边缘值限制来对条纹进行计数。
考虑线段,如果值高于上限阈值
限制它立即被接受。如果该值低于低点
阈值将立即被拒绝。介于两者之间的点
如果限制连接到显示以下像素的像素,则可接受
反应强烈。
minRadius和maxRadius
圆的大小由其半径表示。半径越大,圆越大,反之亦然。这些参数指定要检测的圆的大小范围。
最后
当您使用HoughCircles()和其他类似函数时,您将花费大量时间在调整这些参数上,以找到最佳的数字组合以检测图像中的圆。因此,如果您认为参数有误,请不要感到沮丧。
关于python - Hough Circle中的参数表示什么?如何知道要使用哪些值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59105602/