[Python] 1. imageioでMP4ファイルからPNG画像を出力

matplotlib

はじめに

この記事では、Pythonのimageioライブラリを使用して、MP4形式の動画ファイルからPNG画像を抽出する方法について解説します。動画の各フレームを画像として保存する手順やコード例を紹介していきます。

解説

モジュールのインポート

imageioがない場合は、conda install -c conda-forge imageioなどでインストールします。
imageioの他にimageio-ffmpegも必要となるので、conda install -c conda-forge imageio-ffmpegなどでインストールします。

動画ファイルについて

この記事では、下記で作成したムンカー錯視の動画ファイルをデータとして使用します。

[matplotlibで錯視] 10. ムンカー錯視のアニメーション
ムンカー錯視とは、帯状の構造内部にある物体が同じ色であるにも関わらず違った色に見える錯視である。周りの色と同じ色あいに見えるようになる色の同化効果と、反対の色あいに見えるようになる色の対比効果が関係していると言われている。ここでは縞模様の間隔を変化させることで起こる変化をアニメーションで表示する。

動画ファイルの読み込み

readerオブジェクトを使うことでデータの読み込みができます。iter_data()メソッドを使えば、すべての画像データにアクセスできます。空のリスト(imgs=[])を作成し、そこに読み込んだファイルを順番に格納していきます。

メタデータは下記のようにすることで得られます。

読み込んだ画像の表示

読み込んだ画像を表示すると下記のようになります。

画像の保存

画像を連番ファイルで保存することができます。

まとめ

今回は、PythonのimageioライブラリをつかってMP4動画ファイルからPNG画像を抽出する方法を紹介しました。imageioを使うと数行のコードで動画からフレームを取り出し、画像として保存することができます。動画解析やデータセットの作成など、様々な用途に活用できるテクニックです。

参考

7. Handling Video Files — skimage 0.26.0rc0.dev0 documentation
Imageio Usage Examples — imageio 2.37.0 documentation
コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

コメント