|
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, |
|
(600, 600) |
|
) |
|
for iii in range(len(img_array)): |
|
out.write(img_array[iii]) |
|
out.release() |
|
|
|
if verbose: |
|
print(f"video saved in '{video_name}'.") |
|
|