前提・実現したいこと
現在、python+openCV+pytorchを用いて、WEBカメラからの画像に対してリアルタイムに画像処理を行い、保存するプログラムを作成しています。ただ、pytorchによる画像処理は非常に重く、それなりのスペックのPCを使用していますが、FPSはせいぜい10前後といったところです。
できれば、処理を行う前のrawな状態のWEBカメラ動画も保存しつつ、処理した後の動画も保存したいのですが、while内に処理前動画の
をいれても、画像処理に時間がかかることから、飛び飛び状態の動画しか保存できず困っています。処理後の動画に関しては飛び飛びでも問題はないのですが、処理前の元動画は処理落ちのない状態で保存したいのですが、どのようなプロセスにすれば可能でしょうか?
おそらくmultiprocessに処理をすればなんとかできるのではないか思ってはいるのですが、あまり詳しくないのと、もっとシンプルに解決する方法がないかと思い、質問させて頂きました。
詳しい方がいましたら、よろしくお願いします。
該当のソースコード
python
1def video(output_path=""): 2 vid = cv2.VideoCapture(0, cv2.CAP_DSHOW) 3 video_FourCC = cv2.VideoWriter_fourcc(*'XVID') 4 video_fps = vid.get(cv2.CAP_PROP_FPS) 5 video_size = 1920 , 1080 6 7 isOutput = True if output_path != "" else False 8 if isOutput: 9 out = cv2.VideoWriter(output_path, video_FourCC, video_fps, video_size) 10 11 while True: 12 return_value, frame = vid.read() 13 result_img = video_process(frame) #フレームに対する処理(pytorchによる処理) 14 15 result_add = cv2.hconcat([frame, result_img]) 16 cv2.namedWindow("result", cv2.WINDOW_KEEPRATIO | cv2.WINDOW_NORMAL) 17 cv2.imshow("result", result_add) 18 if isOutput: 19 out.write(result_img) 20 if cv2.waitKey(1) & 0xFF == ord('q'): 21 break 22 23if __name__ == '__main__': 24 25 output_dir = "./movie.avi" 26 video(output_dir)
補足情報(FW/ツールのバージョンなど)
- Windows10+Anaconda
- Python 3.6.8
- opencv-python 4.1.1.26
- pytorch 1.2.0
回答1件
あなたの回答
tips
プレビュー