Matplotlib 영화 프레임 추출

Beginner

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

소개

이 튜토리얼에서는 Matplotlib 을 사용하여 영화에서 개별 프레임을 가져와 파일에 쓰는 과정을 안내합니다. 이 방법은 애니메이션 생성에 유용하며 이벤트 루프 통합 없이 수행할 수 있습니다.

VM 팁

VM 시작이 완료되면, 왼쪽 상단을 클릭하여 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

Writer 설정

프레임을 파일에 쓰는 데 사용될 writer 를 설정해야 합니다. 초당 프레임 수 (fps) 를 설정하고 제목, 아티스트, 코멘트와 같은 메타데이터를 추가합니다.

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

Figure 설정

figure 를 생성하고 플롯의 x 및 y 제한을 설정합니다.

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

플롯 설정

선 플롯을 생성하고 초기 데이터를 빈 배열로 설정합니다.

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

프레임 획득 및 파일에 쓰기

100 번의 반복을 통해 x 및 y 좌표에 대한 난수를 생성합니다. 선 플롯의 데이터를 업데이트하고 writer 를 사용하여 프레임을 획득합니다. 마지막으로, 프레임을 파일에 저장합니다.

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 을 사용하여 영화에서 프레임을 획득하고 이를 파일에 쓰는 방법을 보여주었습니다. writer 설정부터 반복을 통해 플롯에 대한 난수를 생성하는 데 필요한 단계를 다루었습니다. 이 방법은 이벤트 루프 통합 없이 애니메이션을 생성하는 데 유용합니다.