前提・実現したいこと
OpenCVを使って動画の中で動いている物体を検出するコードを書こうと思っています。
下記のコードで動画を再生するとcap.read()でframeを取得できずに動画の再生が最初の1秒程で終わってしまいました。
他の動画でも試してみると動画によって最後まで再生できるものとできないものがありました。
調べてみると動画のFPSと処理の時間によってエラーになってしまうこともあるみたいですがどのようにコードを書き換えてよいのかわかりません。
発生している問題・エラーメッセージ
error: (-215:Assertion failed) !ssize.empty() in function 'resize'
該当のソースコード
python
1import cv2 2import time 3 4cap = cv2.VideoCapture('movie1.mp4') 5time.sleep(2) 6 7while(cap.isOpened()): 8 ret,frame = cap.read() 9 frame = cv2.resize(frame, (640, 360)) 10 cv2.imshow('movie', frame) 11 if cv2.waitKey(20)&0xFF == ord('q'): 12 break 13 14cap.release() 15cv2.destroyAllWindows() 16
試したこと
cv2.VideoCaptureに動画の絶対パスを与える
cv2.waitKey()の秒数を変える
補足情報(FW/ツールのバージョンなど)
python 3.7.9
opencv-python 4.4.0.44
macのターミナルからコードを実行
再生できた動画のプロパティ
WIDTH: 960.0
HEIGHT: 540.0
FPS: 30
FRAME数: 1990.0
動画の長さ[sec]: 66.4
再生できなかった動画のプロパティ
WIDTH: 1920.0
HEIGHT: 1080.0
FPS: 60
FRAME数: 4553.0
動画の長さ[sec]: 75.9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/05 06:02