我试图用houghcircles()检测此裁剪图像中的小圆圈。我试图改变它的参数,但是当我增加参数2以上50 maxRadius也得到错误当其值小于100。现在,它运行,但性能差它得到错误 这是原始图像: 使用houghCircles检测小圆圈(OpenCV)
这是我的代码:
from imutils.perspective import four_point_transform
from imutils import contours
import numpy as np
import argparse
import imutils
import cv2
im = cv2.imread('crop.png')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray, 200, 255,cv2.THRESH_BINARY)
cimg = cv2.cvtColor(thresh,cv2.COLOR_GRAY2BGR)
c = cv2.HoughCircles(thresh, cv2.HOUGH_GRADIENT, 0.5, 41, param1=70,
param2=30, minRadius=10,maxRadius=175)
c = np.uint16(np.around(c))
for i in c[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.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.resizeWindow('img', 800,800)
cv2.imshow('img',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
请,我应该如何改变参数?
谢谢你的帮助,但它给了我一个错误:'contours.sort(键=拉姆达X:cv2.boundingRect(X)[0]) 类型错误:'关键”是无效的关键字参数此功能 ' –
非常感谢它为我工作,当我加入这个功能'高清get_contour_precedence(轮廓的cols): tolerance_factor = 10 起源= cv2.boundingRect(轮廓) 回报(( [1] // tolerance_factor)* tolerance_factor)* cols + origin [0]' –
我建议使用轮廓+ minEnclosingC然后将圆形边界/区域与检测到的轮廓进行比较,以滤除非圆形轮廓 – Micka