Source code for mani_skill.utils.visualization.jupyter_utils

import matplotlib.pyplot as plt
import numpy as np
from IPython.display import HTML, display
from matplotlib import animation


[docs]def display_images(images: list[np.ndarray], dpi=100.0, format="html5_video", **kwargs): """Display images as an animation in jupyter notebook. Args: images: images with equal shape. dpi: resolution (dots per inch). format (str): one of ["html5_video", "jshtml"] References: https://gist.github.com/foolishflyfox/e30fd8bfbb6a9cee9b1a1fa6144b209c http://louistiao.me/posts/notebooks/embedding-matplotlib-animations-in-jupyter-as-interactive-javascript-widgets/ https://stackoverflow.com/questions/35532498/animation-in-ipython-notebook/46878531#46878531 """ h, w = images[0].shape[:2] fig = plt.figure(figsize=(h / dpi, w / dpi), dpi=dpi) fig_im = plt.figimage(images[0]) def animate(image): fig_im.set_array(image) return (fig_im,) anim = animation.FuncAnimation(fig, animate, frames=images, **kwargs) if format == "html5_video": # NOTE(jigu): can not show in VSCode display(HTML(anim.to_html5_video())) elif format == "jshtml": display(HTML(anim.to_jshtml())) else: raise NotImplementedError(format) plt.close(fig)