本文作者Color Space,文章未經作者允許禁止轉載!
測試圖像與題目來源:https://www.cnpython.com/qa/116720
測試圖:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90TQPRTRE5UMBR1Yw40MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2MjNxAjN1gTMyADOwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
結果圖:
實作代碼:
import cv2
import numpy as np
img = cv2.imread('./test.png',0)
cv2.imshow('src',img)
img = cv2.medianBlur(img,3)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,50,\
param1=100,param2=30,minRadius=25,maxRadius=35)
if circles is None:
print("找圓失敗!")
else:
circles = np.uint16(np.around(circles))
a, b, c = circles.shape
print (circles.shape)
for i in range(b):
cv2.circle(cimg, (circles[0][i][0], circles[0][i][1]), circles[0][i][2], (0, 255, 0), 2, cv2.LINE_AA)
cv2.circle(cimg, (circles[0][i][0], circles[0][i][1]), 2, (0, 0, 255), 3, cv2.LINE_AA) # draw center of circle
cv2.imshow('detected circles',cimg)
cv2.imwrite('circle.png',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
更多視覺圖像處理相關内容,請掃碼關注:OpenCV與AI深度學習。