Spaces:
Runtime error
Runtime error
from PIL import Image | |
import numpy as np | |
import cv2 | |
import os | |
os.environ["CUDA_VISIBLE_DEVICES"]="0" | |
def write_video(file_path, frames, fps, reversed = True): | |
""" | |
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 | |
:param reversed: if order of images to be reversed (default = True) | |
""" | |
if reversed == True: | |
frames.reverse() | |
w, h = frames[0].size | |
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') | |
#fourcc = cv2.VideoWriter_fourcc(*'avc1') | |
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 image_grid(imgs, rows, cols): | |
assert len(imgs) == rows*cols | |
w, h = imgs[0].size | |
grid = Image.new('RGB', size=(cols*w, rows*h)) | |
grid_w, grid_h = grid.size | |
for i, img in enumerate(imgs): | |
grid.paste(img, box=(i%cols*w, i//cols*h)) | |
return grid | |
def shrink_and_paste_on_blank(current_image, mask_width): | |
""" | |
Decreases size of current_image by mask_width pixels from each side, | |
then adds a mask_width width transparent frame, | |
so that the image the function returns is the same size as the input. | |
:param current_image: input image to transform | |
:param mask_width: width in pixels to shrink from each side | |
""" | |
height = current_image.height | |
width = current_image.width | |
#shrink down by mask_width | |
prev_image = current_image.resize((height-2*mask_width,width-2*mask_width)) | |
prev_image = prev_image.convert("RGBA") | |
prev_image = np.array(prev_image) | |
#create blank non-transparent image | |
blank_image = np.array(current_image.convert("RGBA"))*0 | |
blank_image[:,:,3] = 1 | |
#paste shrinked onto blank | |
blank_image[mask_width:height-mask_width,mask_width:width-mask_width,:] = prev_image | |
prev_image = Image.fromarray(blank_image) | |
return prev_image | |
def dummy(images, **kwargs): | |
return images, False | |