Matplotlib による動画フレーム抽出

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチュートリアルでは、Matplotlib を使って動画から個々のフレームをキャプチャし、ファイルに書き込む方法を学びます。この方法はアニメーションの作成に役立ち、イベントループの統合なしで行うことができます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

必要なライブラリをインポートする

まず、アニメーションを生成するために必要なライブラリをインポートします。乱数の生成にはnumpy、グラフ描画にはmatplotlib、フレームをファイルに書き込むためにはFFMpegWriterを使用します。

import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from matplotlib.animation import FFMpegWriter

ライターを設定する

フレームをファイルに書き込むために使用するライターを設定する必要があります。1 秒当たりのフレーム数(fps)を設定し、タイトル、作者、コメントなどのメタデータを追加します。

metadata = dict(title='Movie Test', artist='Matplotlib',
                comment='Movie support!')
writer = FFMpegWriter(fps=15, metadata=metadata)

グラフを設定する

グラフを作成し、プロットの x 軸と y 軸の範囲を設定します。

fig = plt.figure()
plt.xlim(-5, 5)
plt.ylim(-5, 5)

プロットを設定する

折れ線グラフを作成し、初期データを空の配列に設定します。

l, = plt.plot([], [], 'k-o')

フレームを取得してファイルに書き込む

100 回の反復処理を行い、x 座標と y 座標に乱数を生成します。折れ線グラフのデータを更新し、ライターを使ってフレームを取得します。最後に、フレームをファイルに保存します。

x0, y0 = 0, 0

with writer.saving(fig, "writer_test.mp4", 100):
    for i in range(100):
        x0 += 0.1 * np.random.randn()
        y0 += 0.1 * np.random.randn()
        l.set_data(x0, y0)
        writer.grab_frame()

まとめ

このチュートリアルでは、Matplotlib を使って動画からフレームを取得し、ファイルに書き込む方法を紹介しました。ライターの設定から反復処理を行い、プロット用の乱数を生成するまでの必要な手順を説明しました。この方法は、イベントループの統合なしでアニメーションを生成する際に役立ちます。