【发布时间】:2019-11-24 11:59:11
【问题描述】:
这是我用来检测圆圈的代码:
import cv2
import numpy as np
import sys
img = cv2.imread(sys.argv[1],0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
param1=50,param2=30,minRadius=5,maxRadius=25)
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()
我想检测图像中的大部分圆圈。从中我可以通过编程找到图像中间附近的位错。 非常感谢任何帮助。提前致谢。
编辑:根据下面 shortcipher3 的建议,我将 param2 从 HoughCircles 降低到 15 并将最小半径增加到 16,现在我可以检测到大部分圆圈,如下所示:
【问题讨论】:
-
索贝尔过滤器有帮助吗?
-
我不知道。我是图像处理的新手。从维基百科的文章来看,这似乎很有趣。你有一个最小的工作示例吗?
-
尝试应用形态膨胀或闭合来增加边框宽度
-
看看这个,也许你可以适应这个想法:stackoverflow.com/questions/34650697/…