[Python]OpenCVで動画のフレームを画像で保存する方法:コピペOK
こんにちは。kakeです。
今回は、Pythonの備忘録的な記事になります。

Python書く人「OpenCVを使って動画を読み込み、全フレームを画像として保存したい!」
こういったテーマで解説していきます。OpenCVを使う人は覚えておいて損はないです。また、動画の解析を行うような人はこういったことをすると思いますし、大学生の研究などでも使うかもですね。実際に、僕は大学の研究で必要だったので、学習しました。
スポンサードサーチ
[Python]OpenCVで動画のフレームを画像で保存する方法:コピペOK
さて、それでは早速解説していきたいと思います。まずは、ゴールを確認しておきましょう。
今回のゴール
実際に、その様子をみてみましょう。
>>テスト動画
このように、新しいディレクトリを作って、そこに全フレームを保存していきます。(フレーム画像の枚数は279でした、これの出し方は後に解説してあります。)
ちなみに、使った動画はMacBookのキーボードを撮っただけの動画です。
手順を把握しよう
それでは、今回の手順をざっと確認していきましょう。
手順
- ライブラリのimport
- 保存用のディレクトリを作成
- 動画を読み込む
- フレームをループで作成したディレクトリに保存していく
ざっと流れはこんな感じです。単純です。
Pythonのコードを解説していきます:コピペOK
コードを解説していきます。コピペもOKです。ただし、ファイル名などは変えないと動かないですよ。
まず、今回しようしたコードは下記の通りです。
使用したPythonのコード
import os
import cv2
#保存ディレクトリ作成
os.mkdir('./保存ディレクトリ')
cap = cv2.VideoCapture('テスト.MOV')
number = len(str(int(cap.get(cv2.CAP_PROP_FRAME_COUNT))))
#初期値設定
n = 0
#ループを回す
while True:
ret, frame = cap.read()
if ret:
cv2.imwrite('./保存ディレクトリ/{}.jpg'.format(str(n).zfill(number)), frame)
n += 1
else:
break
cv2.VideoCapture()
cap.get(cv2.CAP_PROP_FRAME_COUNT)
何桁あるかを知る理由としては、画像を保存するときのファイル名で使いたいからです。
ret, frame = cap.read()
cv2.imwrite()
最後にフレーム画像の読み込みです。保存のファイル名は連番の数字にします。ということでstr(n).zfill(number)をformatで指定します。
(参考記事):Python, OpenCVで動画ファイルからフレームを切り出して保存 note.nkmk.me
人気記事 実績のあるメンズ・ヒゲ脱毛のおすすめ3選[無料カウンセリングあり]