motion-encoder-decoder / video_sequencer /generate_frames_and_video.py
dizolivemint's picture
πŸ” Sync with https://github.com/Dizolivemint/CSC580-Motion-Encoder-Decoder/tree/main
4fa8bcb
import glob
import os
from PIL import Image
from video_sequencer.assemble_video import assemble_video
import numpy as np
from utils.path_utils import resolve_path
def generate_frames_and_video(coords, output_folder="frames", fps=5, frame_size=64):
# Use /tmp directory for frames
tmp_frames_dir = os.path.join("tmp", output_folder)
os.makedirs(tmp_frames_dir, exist_ok=True)
# Clean up any existing frames
for file in glob.glob(os.path.join(tmp_frames_dir, "*.png")):
os.remove(file)
for i, (x, y) in enumerate(coords):
px = int(x * (frame_size - 1))
py = int(y * (frame_size - 1))
frame = np.zeros((frame_size, frame_size), dtype=np.uint8)
frame[py, px] = 255
img = Image.fromarray(frame).convert("RGB")
img.save(os.path.join(tmp_frames_dir, f"frame_{i:03}.png"))
output_video_path = os.path.join(tmp_frames_dir, "output_video.mp4")
assemble_video(tmp_frames_dir, output_video_path, fps=fps)
return output_video_path