OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
未找到匹配项
霍夫圆变换

目标

  • 我们将学习使用霍夫变换在图像中查找圆形。
  • 我们将学习以下函数:cv.HoughCircles()

理论

圆在数学上表示为\((x-x_{center})^2 + (y - y_{center})^2 = r^2\),其中\((x_{center},y_{center})\)是圆的中心,\(r\)是圆的半径。从公式可以看出,我们有3个参数,因此我们需要一个用于霍夫变换的3D累加器,这将非常低效。因此,OpenCV 使用更巧妙的方法,即**霍夫梯度法**,它利用边缘的梯度信息。

我们使用以下函数:cv.HoughCircles (image, circles, method, dp, minDist, param1 = 100, param2 = 100, minRadius = 0, maxRadius = 0)

参数
image8位单通道灰度输入图像。
circles找到的圆的输出向量(cv.CV_32FC3 类型)。每个向量都被编码为一个三元素浮点向量 (x,y,radius)。
method检测方法(参见 cv.HoughModes)。目前,唯一实现的方法是 HOUGH_GRADIENT
dp累加器分辨率与图像分辨率的反比。例如,如果 dp = 1,则累加器具有与输入图像相同的分辨率。如果 dp = 2,则累加器的宽度和高度都减半。
minDist检测到的圆的中心之间的最小距离。如果该参数太小,除了真实的圆之外,还可能错误地检测到多个相邻的圆。如果它太大,则可能会错过一些圆。
param1第一个特定于方法的参数。对于 HOUGH_GRADIENT,它是传递给 Canny 边缘检测器的两个阈值中的较高阈值(较低的阈值是较高的阈值的一半)。
param2第二个特定于方法的参数。对于 HOUGH_GRADIENT,它是检测阶段圆中心的累加器阈值。它越小,检测到的虚假圆就越多。对应于较大累加器值的圆将首先返回。
minRadius最小圆半径。
maxRadius最大圆半径。

试一试