
まくまく
プラグラミング言語「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〜」でテキスト情報を入力しています。
ハフ変換による円の検出では、中心座標と半径を取得できているので、その情報を書き込みました。
元画像
元画像はこちら。
処理後
上のプログラムを実行すると、円を検出し、さらにその中心座標と半径を書き込むことができました。