Edited at

PythonのOpenCVで VideoCapture 関数が動画ファイルを読み込んでくれない

More than 1 year has passed since last update.

pythonのopencvで動画ファイルを読み込んでなにやらしようとしたら、動画ファイルを読み込んでくれなかった。

(pythonファイル内)

cap = cv2.VideoCapture(video_path)
while True:
ret, img = cap.read()
# あとは img 好きなように...

(実行時の出力)
OpenCV: Couldn't read video stream from file "*****"

いろいろ調べたところ、よく出る解決策が skvideo.io をimportして使え、というもの。

言われるがままにやってみた。

まず、pipでインストール

(以下を実行)

pip install sk-video

そして、pythonのソースコード

import skvideo.io #追加

#cap = cv2.VideoCapture(video_path) ← 削除

reader = skvideo.io.FFmpegReader(video_path) #追加

#while True: ← 削除
# ret, img = cap.read() ← 削除  

for img in reader.nextFrame(): #追加
#あとは img を好きなように...

これで動きました。

上のコードでいうretが取得できていませんが、都合の悪い人はすみませんが調べてみてください...

python

python3

skvideo.io

opencv

OpenCV: Couldn't read video stream from file