OpenCV、matplotlib、numpyでほとんどの画像処理ができます。 OpenCVは、インテルが開発・公開したオープンソースライブラリで現在はITseezが保守しています。 matplotlibは、Python及びその科学計算用ライブラリNumPyのためのグラフ描画ライブラリです。 conda install -c conda-forge opencv、conda install numpy、でインストールできます。 matplotlibは、anacondaでpythonをインストールすると自動的にインストールされるようです。
# detect circle
import cv2
import numpy as np
import matplotlib.pyplot as plt
円検知を行うテスト画像として、インターネットからOpenCVのロゴ画像もしくは他の画像を事前にダウンロードしておきます。
img = cv2.imread('opencv-logo-white.png', 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.imshow('detected circles', cimg)
#cv2.waitKey(0) # any key on image
#cv2.destroyAllWindows()
plt.imshow(cimg)
plt.show()