python,jupyter labを用いてカメラデータの処理の勉強をしています。
カメラから取得したフレーム情報をリストに格納していき、処理を行いたいのですが、
フレームを格納したリストに画像などの処理を行っている時間動画の表示やデータの蓄積が止まってしまいます。
画像表示や蓄積を止めずに同時に蓄積したフレームデータを処理する方法はありますでしょうか。
何かアドバイスをいただけますと幸いです。よろしくお願いします。
以下 使用しているプログラムです。
python
1import numpy as np 2import cv2 3import matplotlib.pyplot as plt 4import time 5#カメラを設定 6cap = cv2.VideoCapture(0) 7frame_width = int(cap.get(3)) 8frame_height = int(cap.get(4)) 9 10#mp4で保存するため、以下を設定 11out = cv2.VideoWriter('test_.mp4',cv2.VideoWriter_fourcc('M','P','4','V'), 30, (frame_width,frame_height)) 12 13 14count=0 15frames_list=[] 16#--------------------------------- 17while(True): 18 ret, frame = cap.read() 19 if ret == True: 20 21 # Write the frame into the file 'output.avi' 22 #out.write(frame) 23 24 # Display the resulting frame 25 cv2.imshow('frame',frame) 26 27 #----------------------------------------------------------------- 28 #50フレーム格納すると処理を行うプログラムを実行する。 29 frames_list.append(frame) 30 count = count + 1 31 if count == 50: 32 33 print("150フレーム分取得,predict開始") 34 time_sta=time.time() #時間を計測する 35 frames_extracted=np.array(frames_list) 36 37 #------------------------------------------ 38 #ここで取得したframe_listに対して並列処理を行いたいです。 39 #------------------------------------------ 40 41 42 #処理が終了したため、frames_listを空にする 43 frames_list=[] 44 print("listを空にしました",len(frames_list)) 45 #countを0に戻す 46 count=0 47 48 # Press Q on keyboard to stop recording 49 if cv2.waitKey(1) & 0xFF == ord('q'): 50 break 51 52 # Break the loop 53 else: 54 break 55 56# When everything done, release the video capture and video write objects 57cap.release() 58out.release() 59 60# Closes all the frames 61cv2.destroyAllWindows() 62
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/18 06:59