Spaces:
Runtime error
Runtime error
import matplotlib.pyplot as plt | |
from matplotlib import animation | |
class Animation: | |
JS = 0 | |
HTML = 1 | |
ANIMATION_MODE = HTML | |
def __init__(self, frames, fps=30): | |
"""_summary_ | |
Args: | |
frames (np.ndarray): _description_ | |
""" | |
self.frames = frames | |
self.fps = fps | |
self.anim_obj = None | |
self.anim_str = None | |
def render(self): | |
size = (self.frames.shape[2], self.frames.shape[1]) | |
self.fig = plt.figure(figsize=size, dpi=1) | |
plt.axis('off') | |
img = plt.imshow(self.frames[0], cmap='gray', vmin=0, vmax=255) | |
self.fig.subplots_adjust(0, 0, 1, 1) | |
self.anim_obj = animation.FuncAnimation( | |
self.fig, | |
lambda i: img.set_data(self.frames[i, :, :, :]), | |
frames=self.frames.shape[0], | |
interval=1000 / self.fps | |
) | |
plt.close() | |
if Animation.ANIMATION_MODE == Animation.HTML: | |
self.anim_str = self.anim_obj.to_html5_video() | |
elif Animation.ANIMATION_MODE == Animation.JS: | |
self.anim_str = self.anim_obj.to_jshtml() | |
return self.anim_obj | |
def _repr_html_(self): | |
if self.anim_obj is None: | |
self.render() | |
return self.anim_str | |