Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

개별 프레임을 파일에 저장하지 않고 Python에서 동영상 생성

<시간/>

FuncAnimation 메서드를 사용하여 영화를 만들 수 있습니다. 입자의 위치를 ​​계속 변경하기 위해 사용자 정의 메소드인 업데이트를 생성하고 마지막에 이 메소드는 scatter 인스턴스를 반환합니다.

단계

  • 입자의 초기 위치, 속도, 힘 및 크기를 가져옵니다.

  • 새 그림을 만들거나 figsize =(7, 7)로 기존 그림을 활성화하십시오.

  • 현재 Figure에 좌표축을 추가하고 xlim과 ylim을 사용하여 현재 좌표축으로 만듭니다.

  • 입자의 초기 위치에 대한 산란을 표시합니다.

  • *func* 함수를 반복적으로 호출하여 애니메이션을 만듭니다. 입자의 위치를 ​​변경하는 데 도움이 되는 사용자 정의 메서드를 FuncAnimation 클래스에 전달할 수 있습니다.

  • plt.show()를 사용하여 그림을 표시합니다.

예시

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import numpy as np

dt = 0.005
n = 20
L = 1
particles = np.zeros(n, dtype=[("position", float, 2),
                                ("velocity", float, 2),
                                ("force", float, 2),
                                ("size", float, 1)])

particles["position"] = np.random.uniform(0, L, (n, 2));
particles["velocity"] = np.zeros((n, 2));
particles["size"] = 0.5 * np.ones(n);

fig = plt.figure(figsize=(7, 7))
ax = plt.axes(xlim=(0, L), ylim=(0, L))
scatter = ax.scatter(particles["position"][:, 0], particles["position"][:, 1])

def update(frame_number):
   particles["force"] = np.random.uniform(-2, 2., (n, 2));
   particles["velocity"] = particles["velocity"] + particles["force"] * dt
   particles["position"] = particles["position"] + particles["velocity"] * dt

   particles["position"] = particles["position"] % L
   scatter.set_offsets(particles["position"])
   return scatter,

anim = FuncAnimation(fig, update, interval=10)
plt.show()

출력

개별 프레임을 파일에 저장하지 않고 Python에서 동영상 생성