Spaces:
Sleeping
Sleeping
| import os | |
| import cv2 | |
| from tqdm import tqdm | |
| class VideoCreator: | |
| def __init__(self, imgs_dir, vid_name, pbar=True): | |
| """ | |
| :param str imgs_dir: The directory where the image files are stored. | |
| :param str vid_name: The name of the video's filename. | |
| :param bool pbar: Whether to display a progress bar. | |
| """ | |
| self.imgs_dir = imgs_dir | |
| self.img_array = [] | |
| self.video_filename = vid_name | |
| self.pbar = pbar | |
| def preprocess_images(self): | |
| filenames = sorted(os.listdir(self.imgs_dir)) | |
| print("Adding images...") | |
| if self.pbar: | |
| pb = tqdm(filenames) | |
| else: | |
| pb = filenames | |
| height, width, _ = cv2.imread(self.imgs_dir + "/" + filenames[0]).shape | |
| size = (width, height) | |
| for filename in pb: | |
| complete_filename = self.imgs_dir + "/" + filename | |
| img = cv2.imread(complete_filename) | |
| # convert to BGR | |
| img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) | |
| self.img_array.append(img) | |
| return size | |
| def create_video(self, fps=20): | |
| size = self.preprocess_images() | |
| out = cv2.VideoWriter( | |
| self.video_filename, cv2.VideoWriter_fourcc(*"MJPG"), fps, size | |
| ) | |
| print("Recording video...") | |
| if self.pbar: | |
| pb = tqdm(range(len(self.img_array))) | |
| else: | |
| pb = range(len(self.img_array)) | |
| for i in pb: | |
| out.write(self.img_array[i]) | |
| out.release() | |
| print("Done.") | |