我正在尝试检测数组中的所有圆。为了实现这一目标,我使用了霍夫圆变换。我能够检测到数组中的100%圆,但是有很多误报,当我去除误报时,就无法检测到100%的圆。当我将代码中的dp参数更改为1时,所有的误报都消失了;而当我将其保持为3时,就会出现许多误报,但仍然能够检测到100%的圆。我希望以0或极少数的误报来获得100%的检测结果。如何最好地实现这一目标?
这里有一张示例图片:
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()
这里有一张示例图片:
img = cv2.imread('test1.tiff',0) cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
,它不是已经是彩色图像了吗? - Яois