Introdução
Este tutorial irá guiá-lo através do processo de utilização do Matplotlib para capturar frames individuais de um filme e escrevê-los em um arquivo. Este método é útil para gerar animações e pode ser feito sem a integração de um loop de eventos.
Dicas para a VM (Máquina Virtual)
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Importar as bibliotecas necessárias
Primeiramente, precisamos importar as bibliotecas necessárias para gerar a animação. Usaremos numpy para gerar números aleatórios, matplotlib para plotar e FFMpegWriter para escrever os frames em um arquivo.
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from matplotlib.animation import FFMpegWriter
Configurar o escritor (writer)
Precisamos configurar o escritor (writer) que será usado para escrever os frames em um arquivo. Definimos os frames por segundo (fps) e adicionamos metadados como o título, artista e comentário.
metadata = dict(title='Movie Test', artist='Matplotlib',
comment='Movie support!')
writer = FFMpegWriter(fps=15, metadata=metadata)
Configurar a figura
Criamos uma figura e definimos os limites x e y para o gráfico.
fig = plt.figure()
plt.xlim(-5, 5)
plt.ylim(-5, 5)
Configurar o gráfico
Criamos um gráfico de linha e definimos os dados iniciais como um array vazio.
l, = plt.plot([], [], 'k-o')
Capturar frames e escrever para o arquivo
Iteramos por 100 iterações e geramos números aleatórios para as coordenadas x e y. Atualizamos os dados para o gráfico de linha e capturamos o frame usando o writer. Finalmente, salvamos os frames em um arquivo.
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()
Resumo
Este tutorial mostrou como usar o Matplotlib para capturar frames de um filme e escrevê-los em um arquivo. Cobrimos os passos necessários, desde a configuração do writer até a iteração e a geração de números aleatórios para o gráfico. Este método é útil para gerar animações sem a integração de um event loop.