【问题标题】:How find best circle from cv2.HoughCircles如何从 cv2.HoughCircles 中找到最佳圆
【发布时间】:2016-12-17 06:55:03
【问题描述】:

我正在使用

cv2.HoughCircles

python的功能。

我想在这样的图像中找到圆圈:

在这张图片中有一个大圆圈和许多小圆圈。我只想要最大的。

图像尺寸为 280x300 像素,但如果我设置为函数的参数 minRadius=90 和 maxRadius=150

circles = cv2.HoughCircles(edges, cv2.cv.CV_HOUGH_GRADIENT, 1, 30,
>               param1=20,
>               param2=10,
>               minRadius=80,
>               maxRadius=150)

print (circles)

我发现这样的输出:

  [[[ 149.5         125.5         141.63510132]
  [ 141.5         155.5         112.5544281 ]
  [ 173.5         144.5         103.35617828]
  [ 115.5         134.5          98.32852936]
  [ 173.5         105.5          87.82083893]
  [ 174.5         176.5          85.20856476]
  [ 130.5          99.5          83.69289398]
  [ 105.5         165.5          81.62413788]
  [ 141.5         187.5          80.62567902]
  [  75.5         134.5         104.03124237]]]

所以,我认为所有这些圈子都是可能的,但可能其中一个结果比其他结果最好。我怎样才能找到它?

【问题讨论】:

  • 来自文档:“将首先返回对应于较大累加器值的圆圈。”。所以最好的(在霍夫“意义上”)是第一个
  • 如果您想对检测到的圆进行后处理,您可以使用倒角匹配或类似方法来查找从圆到边缘的最大或平均距离。

标签: python opencv


【解决方案1】:

第四个函数的参数是检测到的圆心之间的最小距离。要只找到一个圆圈,您应该只将此参数设置得更大。

【讨论】:

    猜你喜欢
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多