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