gpt4 book ai didi

python - 为什么 HoughCircles 没有检测到一个圆圈? minDist 是如何工作的?

转载 作者:太空狗 更新时间:2023-10-30 01:11:00 25 4
gpt4 key购买 nike

我试图使用 HoughCircles 检测下图中的圆圈.

enter image description here

这是我为找到所有圆圈而调整的代码。

    import cv2
import numpy as np


img = cv2.imread("images/coins.jpg", 0)

cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

minDist = 247

circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,minDist,
param1=170,param2=80,minRadius=0,maxRadius=0)


print(circles)

#print("Number of circles detected ", circles.length)


circles = np.uint16(np.around(circles))

for i in circles[0,:]:
# draw the outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)


cv2.imshow('detected circles',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

在我尝试的所有方法中,我都无法检测到一枚硬币。检测到的圆圈如下所示。

enter image description here

我这里有三个问题:

  • 第一行左起第二枚硬币未检测到的原因可能是什么?
  • minDist 参数有什么作用?你能解释一下它是如何工作的吗?我阅读了文档但无法理解。
  • zerominRadiusmaxRadius 在这里是什么意思?

最佳答案

  1. 第一行左起第二枚硬币没有检测到是什么原因?

    • 由于 canny 边缘检测参数,未检测到第二枚硬币:param1 .减少 param1 的值你会得到一个完美的答案。
  2. minDist 是什么意思?参数呢?你能解释一下它是如何工作的吗?我阅读了文档但无法理解。

    • 并根据文档 minDist是2个圆之间的最小值。如果减少 minDist 的值你会得到多个邻居圈子。
  3. 做什么 minRadiusmaxRadiuszero是指这里?

    • minRadius最小圆半径。
    • maxRadius最大圆半径。如果<= 0 , 使用最大图片尺寸。如果< 0 , 返回中心而不求半径。

完整代码如下:

import cv2
import numpy as np


img = cv2.imread("coins.jpg", 0)

cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

minDist = 247

circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,minDist,
param1=150,param2=80,minRadius=0,maxRadius=0)


print(circles)

#print("Number of circles detected ", circles.length)


circles = np.uint16(np.around(circles))

for i in circles[0,:]:
# draw the outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

##cv2.imwrite('detected_circle.jpg',cimg)
cv2.imshow('detected circles',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里你可以看到我也得到了第二枚硬币。 enter image description here

关于python - 为什么 HoughCircles 没有检测到一个圆圈? minDist 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54377418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com