[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. ムンカー錯視のアニメーション
ムンカー錯視における縞模様の間隔変化が色彩知覚に与える影響をmatplotlibでアニメーション化した記事。同じ色の物体が異なる背景によって違う色に見える現象を視覚的に解説し、色の同化効果と対比効果のメカニズムを探ります。

動画ファイルの読み込み

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ファイル)

コメント