Video-Background-Removal / video_to_images.py
killian31
initial commit
8b09391
import os
import cv2
from tqdm import tqdm
class ImageCreator:
def __init__(self, filename, imgs_dir, image_start=0, image_end=0, pbar=True):
"""
:param str filename: The name of the video's filename.
:param str imgs_dir: The directory where to store the image files.
:param int image_start: The first image to be extracted.
:param int image_end: The last image to be extracted, 0 if full video.
:param bool pbar: Whether to display a progress bar.
"""
self.filename = filename
self.imgs_dir = imgs_dir
self.image_start = image_start
self.image_end = image_end
self.pbar = pbar
if not os.path.exists(imgs_dir):
os.makedirs(imgs_dir)
def get_images(self):
vid = cv2.VideoCapture(self.filename)
total_frames = int(vid.get(cv2.CAP_PROP_FRAME_COUNT))
success, image = vid.read()
count = 0
if self.image_end == 0:
self.image_end = total_frames
zfill_max = len(str(total_frames))
ok_count = 0
print("Writing images...")
if self.pbar:
pb = tqdm(total=total_frames)
while success:
if count >= self.image_start and count <= self.image_end:
cv2.imwrite(
f"{self.imgs_dir}/frame_{str(ok_count).zfill(zfill_max)}.png", image
)
ok_count += 1
success, image = vid.read()
if self.pbar:
pb.update(1)
count += 1
if self.pbar:
pb.close()
print("Wrote {} image files.".format(ok_count))