圓形的辨識 --- cv2.HoughCircles
★cv2.HoughCircles的使用&格式
★範例所使用的圖檔下載位置
★程式範例執行
import cv2 import numpy as np img = cv2.imread('opencv_logo.png',0) img = cv2.medianBlur(img,5) cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT, 1,20, param1=50, param2=40, minRadius=0, maxRadius=0) 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),3) # draw the center of the circle cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3) cv2.imshow('detected circles',cimg) cv2.waitKey(0) cv2.destroyAllWindows()
★範例執行前後之比較
★套用於齒輪辨識
import numpy as np import cv2 from matplotlib import pyplot as plt # 讀取圖檔 img = cv2.imread("gear1.png", 1) # 圖檔轉灰階 imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰階後進行存檔 cv2.imwrite('graygear.png', imgGray) # 使用灰階圖抓圓 circles = cv2.HoughCircles(imgGray,cv2.HOUGH_GRADIENT, 1,20, param1=60, param2=50, minRadius=0, maxRadius=60) circles = np.uint16(np.around(circles)) for i in circles[0,:]: # 圓形的繪製 cv2.circle(img,(i[0],i[1]),i[2],(255,0,255),2) # 圓心的繪製 cv2.circle(img,(i[0],i[1]),2,(0,0,255),3) cv2.imshow('detected circles',img) cv2.waitKey(0)
★齒輪辨識目的
找出齒輪的圓心位置,方便之後直行計算相關程式的條件。
★齒輪辨識結果
Comments
comments powered by Disqus