-
Notifications
You must be signed in to change notification settings - Fork 0
/
testCircleCheckr.py
40 lines (34 loc) · 1.23 KB
/
testCircleCheckr.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# coding: UTF-8
import cv2
import numpy as np
import sys
argvs = sys.argv
if (len(argvs) <= 1):
print('Usage: # python %s TestDataFilePath' % argvs[0])
quit()
#画像をグレースケール(,0)で取得。
img = cv2.imread(argvs[1],0)
#メディアンフィルタを適用。
img = cv2.medianBlur(img,3)
#色配列をグレースケールからBGR(OpenCV規格)へ変換。
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
#'有'の場合のパラメータ
#circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
# param1=30,param2=30,minRadius=10,maxRadius=0)
#'無'の場合のパラメータ
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
param1=22,param2=27,minRadius=10,maxRadius=0)
print(type(circles))
#丸が検出できた場合の処理。
if type(circles) is not type(None):
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()