import cv2, time, os, argparse, imutils import numpy as np parser = argparse.ArgumentParser(description='Extract memes from commentawards video') parser.add_argument('filename', metavar='filename', nargs='?', default='Tumblr Awards v1', type=str, help='filename of video to download') parser.add_argument('foldername', metavar='foldername', nargs='?', default='default', type=str, help='folder to extract memes into; use \'default\' or leave unspecified to use filename as foldername') args = parser.parse_args() FILENAME = args.filename FOLDERNAME = FILENAME if args.foldername == 'default' else args.foldername cap = cv2.VideoCapture(FILENAME+'.mp4') os.makedirs(FILENAME, exist_ok=True) ret, frame = cap.read() x, y = 0, 0 count = 0 capCount = 0 s = time.time() last = [-1, -1, -1] while(cap.isOpened()): prev_frame = frame.copy() ret, frame = cap.read() if ret: count += 1 color = frame[x, y][:] if (color != last).all(): if last[0] > 170: print(f'\nCapturing {capCount}.jpg') cv2.imwrite(f"{FILENAME}/{capCount}.jpg", prev_frame) capCount += 1 sec = count/cap.get(cv2.CAP_PROP_FPS) print('\r[rel', time.time()-s, 'vid', sec, '] FRAME', count, color, end='') #cv2.putText(frame, 'frame {} pixel {}, {} is color {}'.format(count, x, y, color), (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255 if color[0] < 170 else 0), 2) #cv2.imshow("frame", frame) last = color[:] else: print('Could not read frame') print('DONE') cap.release() cv2.destroyAllWindows()