Python OpenCV / 検出した円の中心座標と半径を書く方法

プラグラミング言語「PYTHON」を使ってみよう!!

業務自動化・効率化の実例を踏まえ、解説できればと思っています。対象は、プログラムを学び始めた初心者向けとなります。

今回の内容

  • openCVを用いて画像内の円を検出する
  • 検出した円を描く
  • 検出した円の中心座標と半径を書き込む



使用するのはopenCV

使用するのは、画像処理ライブラリのopenCVです。ここではopenCVがインストールされているのを前提として書き進めていきます。

サンプルコード

import cv2
import numpy as np

img = cv2.imread('circletest.jpg',0)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,50,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.putText(cimg,"center:" + str(int(i[0]))+ ","+ str(int(i[1])),(i[0],i[1]), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0))
    cv2.putText(cimg,"r:" + str(int(i[2])),(i[0],i[1]+30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0))
    cv2.imwrite('detected-circles.jpg',cimg)

コメント

昨日の記事「円を検出する」に記載したプログラムに2行追加しただけです。

追加したのは、13行目と14行目の「cv2.putText〜」でテキスト情報を入力しています。

ハフ変換による円の検出では、中心座標と半径を取得できているので、その情報を書き込みました。

元画像


元画像はこちら。

処理後


上のプログラムを実行すると、円を検出し、さらにその中心座標と半径を書き込むことができました。



タイトルとURLをコピーしました