import cv2 video = cv2.VideoCapture() video.open("videos/testvideo.mp4") width = video.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH) height = video.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT) nframes = video.get(cv2.cv.CV_CAP_PROP_POS_FRAMES) print width,height,nframes def frames(fname): video = cv2.VideoCapture() assert video.open(fname) while 1: ok,image = video.read() if not ok: break yield image video.release() for i,image in enumerate(frames("videos/testvideo.mp4")): if i==100: break imshow(image) from itertools import islice imshow(next(islice(frames("videos/testvideo.mp4"),100,101))) means = [mean(image) for image in frames("videos/testvideo.mp4")] plot(means) from collections import deque # compute deltas between two frames deltas = []; nbuf = 3 buffer = deque() for image in islice(frames("videos/quantum.mp4"),0,2000): buffer.append(image) while len(buffer)>nbuf: buffer.popleft() deltas.append(mean(abs(buffer[-1]-buffer[0]))) deltas = array(deltas); plot(deltas) from scipy.ndimage import filters usm = deltas-filters.gaussian_filter(deltas,2.0) plot(usm) usm = where(usm<0.2*amax(usm),0,usm) plot(usm) usm = where(usm