Pythonで円を認識する
今回は、Pythonで円の検出をしていきます。
ハフ変換というのが円を見つけるのに使えるので、opencvに入ってるものを使っていきます。
import cv2 import numpy as np #カメラ認識 cap = cv2.VideoCapture(0) while(True): #映像取得 ret, frame = cap.read() if ret == False: continue #左右反転 frame = frame[:,::-1] #グレースケール化 gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY) #平滑化 gray = cv2.GaussianBlur(gray, (35,35), 1) #バッファ作成 img = frame.copy() #円の検出 circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 30, param1=80, param2=70, minRadius=10, maxRadius=100) if circles is not None: circles = np.uint16(np.around(circles)) for i in circles[0,:]: cv2.circle(img,(i[0],i[1]),i[2],(255,255,0),2) cv2.circle(img,(i[0],i[1]),2,(0,0,255),3) #結果表示 cv2.imshow('img', img) if cv2.waitKey(1) & 0xFF == ord("q"): break cap.release() cv2.destroyAllWindows()
グレースケール化はハフ変換をするのに必要なことです。
また、途中の平滑化はハフ変換の精度が上がるみたいなので適当にブラーかけてます。