Matplotlib関連

OpenCV を使った動画生成

import cv2
import matplotlib.pyplot as plt
import numpy as np

fourcc = cv2.VideoWriter_fourcc(*"h264")
video  = cv2.VideoWriter("sample.mp4", fourcc, 30.0, (800, 450))

fig = plt.figure(figsize=(8, 4.5),dpi=100)
plt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0)

t = np.linspace(0, 10*np.pi, 10000)
for i in range(301):
    r = np.sin(i*t/300)
    plt.plot(r*np.cos(t), r*np.sin(t))

    plt.xlim(-1.6/0.9, 1.6/0.9)
    plt.ylim(-1.0, 1.0)

    fig.canvas.draw()
    image_array = np.array(fig.canvas.renderer.buffer_rgba())
    img = cv2.cvtColor(image_array, cv2.COLOR_RGBA2BGR)
    video.write(img)
    plt.gca().clear()

plt.close()
video.release()

参考文献

matplotlib : Agg Buffer To Array