Извлечение кадров из фильма с использованием Matplotlib

Beginner

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

Введение

В этом руководстве показано, как использовать Matplotlib для извлечения отдельных кадров из фильма и записи их в файл. Этот метод полезен для создания анимаций и может быть выполнен без интеграции цикла событий.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к 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

Настройка писателя

Нам нужно настроить писателя, который будет использоваться для записи кадров в файл. Мы задаем количество кадров в секунду (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 для захвата кадров из фильма и записи их в файл. Мы рассмотрели необходимые шаги от настройки писателя до прохода по итерациям и генерации случайных чисел для графика. Этот метод полезен для генерации анимаций без интеграции цикла событий.