元ネタはこれです。
Hough Circle Transform — OpenCV-Python Tutorials 1 documentation
#detect_circle.py import sys import cv2 import numpy as np args = sys.argv img = cv2.imread(args[1], 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=30,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),2) # draw the center of the circle cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3) cv2.imwrite('detected_' + args[1], cimg)
コマンドラインから下記のように使います。
$python detect_circle.py target.jpg
やってみた1
元画像
上記リンクでの例
検出結果画像
検出された円が、線画で上書きされています。
やってみた2
元画像
ぱくたそのやつ。ポンポンが丸として検出されることを期待。
検出結果画像
ナンジャコリャ
得手不得手があるみたいですね。