現在、OpenCVを使用して、円を検出しその円が何秒で消えるのか測定するプログラムを製作しています。以下が作成したプログラムです。
python
1 2import numpy as np 3import cv2 4import time 5cap = cv2.VideoCapture(0) 6 7frame = np.zeros((512,512,3), dtype=np.uint8) 8frame[:] = tuple((0,0,0)) 9 10cur,pre = False,False 11start = time.time() 12while True: 13 14 ret, frame = cap.read() 15 gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY) 16 gray = cv2.GaussianBlur(gray, (33,33), 1) 17 circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 60, param1=10, param2=85, minRadius=0, maxRadius=85) 18 if circles is not None: 19 circles = np.uint16(np.around(circles)) 20 for i in circles[0,:]: 21 cv2.circle(frame,(i[0],i[1]),i[2],(0,0,255),2) 22 cv2.circle(frame,(i[0],i[1]),2,(0,0,255),3) 23 cur = not pre 24 print('circle:{}->{}'.format(pre,cur)) 25 26 27 if not pre and cur: 28 start = time.time() 29 30 elif pre and not cur: 31 elapsed_time = time.time() - start 32 print("elapsed_time:{0}".format(elapsed_time) + "[sec]") 33 34 pre = cur 35 36 cv2.imshow('preview', frame) 37 key = cv2.waitKey(10) 38 if key == ord("q"): 39 break 40cv2.destroyAllWindows() 41
また、このプログラムを起動させたときの結果が下に示す写真の通りです。
このように、円を提示し続けていても、値が小さくなってしまいます。
これについて、私には知識がなく、どこに問題があるか突き止めることが出来ませんでした。上記プログラムにどのような不備があるのでしょうか。回答お願いします。
OpenCVはBGR形式でデータを返します。よってgray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)では。プログラムに不備というより、まず使っているOpenCVの関数に関して一通り公式ドキュメントを読む事をお勧めします。
回答1件
あなたの回答
tips
プレビュー