|
import cv2 |
|
import numpy as np |
|
from PIL import Image |
|
|
|
|
|
def write_video(file_path, frames, fps): |
|
""" |
|
Writes frames to an mp4 video file |
|
:param file_path: Path to output video, must end with .mp4 |
|
:param frames: List of PIL.Image objects |
|
:param fps: Desired frame rate |
|
""" |
|
|
|
w, h = frames[0].size |
|
fourcc = cv2.VideoWriter_fourcc("m", "p", "4", "v") |
|
writer = cv2.VideoWriter(file_path, fourcc, fps, (w, h)) |
|
|
|
for frame in frames: |
|
np_frame = np.array(frame.convert("RGB")) |
|
cv_frame = cv2.cvtColor(np_frame, cv2.COLOR_RGB2BGR) |
|
writer.write(cv_frame) |
|
|
|
writer.release() |
|
|
|
|
|
def dummy(images, **kwargs): |
|
return images, False |
|
|
|
|
|
def preprocess_image(current_image, steps, image_size): |
|
next_image = np.array(current_image.convert("RGBA")) * 0 |
|
prev_image = current_image.resize((image_size - 2 * steps, image_size - 2 * steps)) |
|
prev_image = prev_image.convert("RGBA") |
|
prev_image = np.array(prev_image) |
|
next_image[:, :, 3] = 1 |
|
next_image[steps : image_size - steps, steps : image_size - steps, :] = prev_image |
|
prev_image = Image.fromarray(next_image) |
|
|
|
return prev_image |
|
|
|
|
|
def preprocess_mask_image(current_image): |
|
mask_image = np.array(current_image)[:, :, 3] |
|
mask_image = Image.fromarray(255 - mask_image).convert("RGB") |
|
current_image = current_image.convert("RGB") |
|
|
|
return current_image, mask_image |
|
|