import argparse import os import os.path as osp import cv2 import glob import sys import tqdm def main(): parser = argparse.ArgumentParser(description='Get frames from a video') parser.add_argument( '--motsynth-root', help='Directory hosting MOTSYnth part directories') args = parser.parse_args() video_paths = glob.glob( osp.join(args.motsynth_root, 'MOTSynth_[0-9]/[0-9][0-9][0-9].mp4')) frames_dir = os.path.join(args.motsynth_root, "frames") os.makedirs(frames_dir, exist_ok=True) print("Start extracting frames...") for video_path in tqdm.tqdm(video_paths): vidcap = cv2.VideoCapture(video_path) seq_name = osp.basename(video_path).split(".")[0].zfill(3) out_dir = os.path.join(frames_dir, seq_name, 'rgb') os.makedirs(out_dir, exist_ok=True) count = 1 success = True #print("Unpacking video...") while success: success, image = vidcap.read() if count < 3: count += 1 continue if not success or count == 1803: break if count % 200 == 0: print("Extract frames until: " + str(count - 3).zfill(4) + ".jpg") filename = os.path.join(out_dir, str(count - 3).zfill(4) + ".jpg") cv2.imwrite(filename, image) # save frame as JPEG file count += 1 print("Done!") if __name__ == '__main__': main()