以下はハフ変換により、リアルタイムで円を検出するプログラムです。
python
1import numpy as np 2import cv2 3import time 4 5cap = cv2.VideoCapture(1) 6 7while True: 8 9 ret, frame = cap.read() 10 gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY) 11 gray = cv2.GaussianBlur(gray, (33,33), 1) 12 13 circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 60, param1=10, param2=85, minRadius=0, maxRadius=85) 14 if circles is not None: 15 circles = np.uint16(np.around(circles)) 16 for i in circles[0,:]: 17 cv2.circle(frame,(i[0],i[1]),i[2],(0,0,0),2) 18 cv2.circle(frame,(i[0],i[1]),2,(0,0,0),3) 19 20 cv2.imshow('preview', frame) 21 key = cv2.waitKey(10) 22 if key == ord("q"): 23 break 24 25 26cv2.destroyAllWindows() 27 28 29コード
これに検出した円が何秒映りこんでいたのか時間を測れるようにしたいと考え、【Python】処理にかかる時間を計測して表示を参考に以下のように変更しました。
python
1import numpy as np 2import cv2 3import time 4 5cap = cv2.VideoCapture(1) 6 7while True: 8 9 ret, frame = cap.read() 10 gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY) 11 gray = cv2.GaussianBlur(gray, (33,33), 1) 12 13 circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 60, param1=10, param2=85, minRadius=0, maxRadius=85) 14 if circles is not None: 15 start = time.time() 16 circles = np.uint16(np.around(circles)) 17 for i in circles[0,:]: 18 cv2.circle(frame,(i[0],i[1]),i[2],(0,0,0),2) 19 cv2.circle(frame,(i[0],i[1]),2,(0,0,0),3) 20 21 if circles is None: 22 elapsed_time = time.time() - start 23 print(elapsed_time) 24 break 25 26 27 28 29 30 cv2.imshow('preview', frame) 31 key = cv2.waitKey(10) 32 if key == ord("q"): 33 break 34 35 36cv2.destroyAllWindows() 37 38 39コード
円は検出することが出来るのですが、時間を測ることが出来ません。やりたかったこととしては
円を発見 → 時間(A)記録 → 円が消えた → 時間(B)記録 → 時間(B) ― 時間(A) →
時間(B - A)表示
という流れです。どのようにすれば上記の流れをプログラムに反映させることが出来るか教えていただけると助かります。
分かりずらい文章で申し訳ありません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。