DeepFakeClassifier / preprocessing /extract_images.py
Hamidreza-Hashemp's picture
Upload 65 files
cd3346a
raw
history blame
1.38 kB
import argparse
import os
os.environ["MKL_NUM_THREADS"] = "1"
os.environ["NUMEXPR_NUM_THREADS"] = "1"
os.environ["OMP_NUM_THREADS"] = "1"
from functools import partial
from glob import glob
from multiprocessing.pool import Pool
from os import cpu_count
import cv2
cv2.ocl.setUseOpenCL(False)
cv2.setNumThreads(0)
from tqdm import tqdm
def extract_video(video, root_dir):
capture = cv2.VideoCapture(video)
frames_num = int(capture.get(cv2.CAP_PROP_FRAME_COUNT))
for i in range(frames_num):
capture.grab()
success, frame = capture.retrieve()
if not success:
continue
id = os.path.splitext(os.path.basename(video))[0]
cv2.imwrite(os.path.join(root_dir, "jpegs", "{}_{}.jpg".format(id, i)), frame, [cv2.IMWRITE_JPEG_QUALITY, 100])
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description="Extracts jpegs from video")
parser.add_argument("--root-dir", help="root directory")
args = parser.parse_args()
os.makedirs(os.path.join(args.root_dir, "jpegs"), exist_ok=True)
videos = [video_path for video_path in glob(os.path.join(args.root_dir, "*/*.mp4"))]
with Pool(processes=cpu_count() - 2) as p:
with tqdm(total=len(videos)) as pbar:
for v in p.imap_unordered(partial(extract_video, root_dir=args.root_dir), videos):
pbar.update()