gpt4 book ai didi

python - 使用霍夫圆变换检测圆阵列

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:20 28 4
gpt4 key购买 nike

我正在尝试检测数组中的所有圆圈。为此,我使用了 Hough Circle Transform。我能够检测到阵列中 100% 的圆圈,但有很多误报,当我消除误报时,我无法检测到 100% 的圆圈。当我在下面给出的代码中将 dp 参数更改为 1 时,所有误报都消失了,当我将其保持为 3 时,会有很多误报,100% 检测。我想获得 100% 的检测,0 或很少的误报。执行此操作的最佳方法是什么。

import cv2
import cv2.cv as cv
import numpy as np

img = cv2.imread('test1.tiff',0)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img, cv.CV_HOUGH_GRADIENT,3,15,
param1=70 ,param2=17,minRadius=1,maxRadius=10)

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)

cv2.imshow('detected circles',cimg)
cv2.imwrite("output15.jpg", cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

这里有一个示例图片:

Original Image

No False Positives False Positives

最佳答案

既然它们是圆圈,而且都是黑色的,为什么不用形态学圆盘将它们过滤掉,然后从过滤后的图像中减去原始图像以获得良好的响应呢?形态学不是特别快,但比 Hough 快。你要做的是扩大背景(圆盘状)直到黑色消失,然后从中减去原始图像。然后是阈值。然后,您可以进行大小过滤以消除任何可能通过的微小碎片。

鉴于此应用程序,我认为 Hough 不是最佳选择,除非这是一个学校项目。

关于python - 使用霍夫圆变换检测圆阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24388687/

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