38 lines
1009 B
Python
38 lines
1009 B
Python
import cv2
|
|
import numpy as np
|
|
from PIL import Image
|
|
|
|
movie = cv2.VideoCapture("movie.mp4") # VideoCapture take as argument any video files, image sequences or cameras.
|
|
|
|
|
|
# Returns the vectorized mean of the argument (an image).
|
|
def frame_avg(img):
|
|
scaled = img.astype('uint32')
|
|
squared = scaled**2
|
|
avgsq = np.average(squared, axis=0)
|
|
return np.sqrt(avgsq).astype('uint8')
|
|
|
|
|
|
# Returns a multi-dimensional array (ndarray) cointaining a column for every frame taken from the argument (image sequence).
|
|
def collect_frames(movie):
|
|
res = []
|
|
s, i = movie.read()
|
|
while s:
|
|
res.append(frame_avg(i))
|
|
s, i = movie.read()
|
|
for i in range(30): # The argument of range() is the number of skipped frames for every iteration.
|
|
if s:
|
|
s, i = movie.read()
|
|
return res
|
|
|
|
|
|
complete = collect_frames(movie)
|
|
|
|
c = np.array(complete)
|
|
|
|
cc = c.swapaxes(0, 1)
|
|
|
|
i = Image.fromarray(cc, mode='RGB')
|
|
|
|
i.save('barcode.jpg') # Name of your output
|