現在、webカメラから取り込んだ画像から円を検出し、その円が消えるまでの時間を測定するというプログラムを作成しています。コードは以下の通りです。
python
1import numpy as np 2import cv2 3import time 4import csv 5 6f = open("cl_save.csv","a") 7csvWriter = csv.writer(f) 8cap = cv2.VideoCapture(0) 9start = None 10 11while True: 12 ret, frame = cap.read() 13 if not ret: 14 break 15 16 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 17 gray1 = cv2.GaussianBlur(gray, (5, 5), 1) 18 circles = cv2.HoughCircles(gray1, cv2.HOUGH_GRADIENT, 1, 60, 19 param1=10, param2=85, minRadius=0, maxRadius=85) 20 21 if circles is not None and start is None: 22 start = time.time() 23 circles = np.uint16(np.around(circles)) 24 for i in circles[0,:]: 25 cv2.circle(frame,(i[0],i[1]),i[2],(0,0,0),2) 26 cv2.circle(frame,(i[0],i[1]),2,(0,0,0),3) 27 28 if circles is not None and start is not None: 29 circles = np.uint16(np.around(circles)) 30 for i in circles[0,:]: 31 cv2.circle(frame,(i[0],i[1]),i[2],(0,0,0),2) 32 cv2.circle(frame,(i[0],i[1]),2,(0,0,0),3) 33 34 elif circles is None and start is not None: 35 elapsed_time = time.time() - start 36 37 38 39 print(elapsed_time) 40 listData = [] 41 listData.append(str(elapsed_time)) 42 csvWriter.writerow(listData) 43 start = None 44 45 cv2.imshow('preview', gray1) 46 47 key = cv2.waitKey(10) 48 if key == ord("q"): 49 break 50 51cv2.destroyAllWindows()
上記のプログラムでは、単体の円であれば時間を計測することが出来ますが、複数検出された場合すべて消えるまで計測が終了しません。複数円が検出された場合、各円の出現時間を個別に計測できるようにしたいのですが、可能ですか?また、可能であれば参考にできそうな資料を教えていただけるとありがたいです。
回答1件
あなたの回答
tips
プレビュー