opencvを使いハフ変換で画像から円を探す(HoughCircles)

HoughCircles(image, circles, method, dp, minDist, param1, param2, minRadius, maxRadius)

ハフ変換を用いて画像内から円を検出する

項目 内容
image 8ビット,シングルチャンネル,グレースケールの入力画像
circles 検出された円を出力するベクトル
method 現在のところCV_HOUGH_GRADIENT メソッドのみが実装
dp 画像分解能に対する投票分解能の比率の逆数
minDist 検出される円の中心同士の最小距離.このパラメータが小さすぎると,正しい円の周辺に別の円が複数誤って検出される
param1 手法依存の 1 番目のパラメータ. CV_HOUGH_GRADIENT の場合は, Canny() エッジ検出器に渡される2つの閾値の内,大きい方の閾値を表す
param2 手法依存の 2 番目のパラメータ. CV_HOUGH_GRADIENT の場合は,円の中心を検出する際の投票数の閾値を表す.これが小さくなるほど,より多くの誤検出が起こる可能性がある
minRadius 円の半径の最小値
maxRadius 円の半径の最大値

■入力画像
houghcircles test

■処理コード

import cv2
import cv2.cv as cv
import numpy as np

img = cv2.imread('mm.jpg',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img,cv.CV_HOUGH_GRADIENT
          ,1,20, param1=50,param2=30,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
 cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
 cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

cv2.imshow('detected circles',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.imwrite('output.jpg',cimg)

 

■結果
houghcircles test

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA