opencv-pythonを使って動画を出力したい
Python版OpenCVを使ってフレーム数の多い動画を出力したいです。
動画を読み込む→1フレームごとに落書きを入れる→動画を書き出す
といった流れになります。
読み込む動画は約17000フレームあります。
ソースコード
Python
1#動画読み込み 2video = cv2.VideoCapture('hoge.mp4') 3W = video.get(cv2.CAP_PROP_FRAME_WIDTH) 4H = video.get(cv2.CAP_PROP_FRAME_HEIGHT) 5count = video.get(cv2.CAP_PROP_FRAME_COUNT) 6fps = video.get(cv2.CAP_PROP_FPS) 7 8fourcc = cv2.VideoWriter_fourcc(*'DIB ') 9out = cv2.VideoWriter('output.avi', fourcc, fps, (int(W), int(H))) 10 11if video.isOpened() == False: 12 print("Error opening video stream or file") 13 14i = 0 #ループのカウンタ 15while video.isOpened(): 16 ret, frame = video.read() 17 frame = draw(frame) #ここで何らかの書き込みを入れる 18 out.write(frame) 19 if i == LIMITTER: #LIMITTERの数字を変えて、利用するフレーム数を調整する 20 break 21 i+=1 22 23video.release() 24out.release()
試したこと
LIMITTER=100などの少ないフレーム数だと正しく出力されますが、
元動画の全フレームやそれに近い数のフレームだと出力された動画が読み込み不可能になります。
環境
Python 3.6.5
opencv-python 3.4.1.15
あなたの回答
tips
プレビュー