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

matplotlib

はじめに

画像ファイルを扱うライブラリであるimageioで動画ファイル(.mp4)からPNG画像を出力する方法を説明する。

解説

モジュールのインポート

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

動画ファイルについて

データには、下記記事で作成したムンカー錯視の動画ファイルを用いる。

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

動画ファイルの読み込み

vidはreaderオブジェクトであり、これを使うことでデータの読み込みができる。
iter_data()を使うことで、すべての画像データにアクセスすることができる。imgs=[]でからのリストを作成して、そこに読み込んだファイルを入れていく。

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

読み込んだ画像の表示

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

画像の保存

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

参考

Handling Video Files — skimage v0.18.0.dev0 docs
Imageio usage examples — imageio 2.9.0 documentation
コードをダウンロード(.pyファイル)コードをダウンロード(.ipynbファイル)

コメント