0
這是一個簡單的圖像,具有相同大小和硬邊的斑點作爲灰度圖像。爲什麼下面的代碼找不到這些圈子?OpenCV3圓檢測 - 如何找到簡單的圓圈(明顯的解決方案未找到)
ret,thresh1 = cv2.threshold(img,180,250,cv2.THRESH_BINARY)
thresh1 = cv2.blur(thresh1,(15,15))
circles = cv2.HoughCircles(thresh1,cv2.HOUGH_GRADIENT, 2, np.shape(thresh1)[0]/8, param1=200, param2=10)
if circles is not None:
plt.imshow(np.flipud(thresh1), origin='lower', cmap='bone')
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
currentAxis = plt.gca()
currentAxis.add_patch(Circle((i[0] , i[1]), i[2],fill=False,color='red'))
currentAxis.add_patch(Circle((i[0] , i[1]), 8,fill=True,color='green'))
plt.show()
,我得到的輸出是這樣的:
我試着調整參數1和參數。要麼我得到錯誤的檢測結果(超過這個)或者什麼都沒有!最小距離參數僅設置爲圖像寬度的1/8作爲任意值。
任何幫助將是非常有幫助的。
我想你的情節可能是顛倒?仍然沒有找到所有的圈子,但是也許你在嘗試糾正錯誤的東西時玩得太多了? –
感謝 - 好點。我已經清除了點和代碼盲目;-) – user3182080
是的,我顛倒了圖像,並將原點設置爲底部 - 刪除該行並使用下面的參數工作。翻轉和原點選項用於此項目的進一步工作。 '代碼' 圈= cv2.HoughCircles(THRESH1,cv2.HOUGH_GRADIENT,1.2,minDist = 10,參數1 = 200,參數2 = 50,minRadius = 0,maxRadius = 100) '代碼' 做工作很好。 – user3182080