from typing import Any, Union import pathlib import cv2 def create_video(num_iter: int, save_dir: Union[Any, pathlib.Path], video_frame_freq: int = 1, fname: str = "rendering_process", verbose: bool = True): if not isinstance(save_dir, pathlib.Path): save_dir = pathlib.Path(save_dir) img_array = [] for i in range(0, num_iter): if i % video_frame_freq == 0 or i == num_iter - 1: filename = save_dir / f"iter{i}.png" img = cv2.imread(filename.as_posix()) img_array.append(img) video_name = save_dir / f"{fname}.mp4" out = cv2.VideoWriter( video_name.as_posix(), cv2.VideoWriter_fourcc(*'mp4v'), 30.0, # fps (600, 600) # video size ) for iii in range(len(img_array)): out.write(img_array[iii]) out.release() if verbose: print(f"video saved in '{video_name}'.")