我試圖用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