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 | |