Thong Nguyen
add keyframe detector files
3a74c08
import os
import cv2
import matplotlib.pyplot as plt
from PIL import Image
def scale(img, xScale, yScale):
res = cv2.resize(img, None, fx=xScale, fy=yScale, interpolation=cv2.INTER_AREA)
return res
def crop(infile, height, width):
im = Image.open(infile)
imgwidth, imgheight = im.size
for i in range(imgheight // height):
for j in range(imgwidth // width):
box = (j * width, i * height, (j + 1) * width, (i + 1) * height)
yield im.crop(box)
def averagePixels(path):
r, g, b = 0, 0, 0
count = 0
pic = Image.open(path)
for x in range(pic.size[0]):
for y in range(pic.size[1]):
imgData = pic.load()
tempr, tempg, tempb = imgData[x, y]
r += tempr
g += tempg
b += tempb
count += 1
return (r / count), (g / count), (b / count), count
def convert_frame_to_grayscale(frame):
grayframe = None
gray = None
if frame is not None:
cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = scale(gray, 1, 1)
grayframe = scale(gray, 1, 1)
gray = cv2.GaussianBlur(gray, (9, 9), 0.0)
return grayframe, gray
def prepare_dirs(keyframePath, imageGridsPath, csvPath):
if not os.path.exists(keyframePath):
os.makedirs(keyframePath)
if not os.path.exists(imageGridsPath):
os.makedirs(imageGridsPath)
if not os.path.exists(csvPath):
os.makedirs(csvPath)
def plot_metrics(indices, lstfrm, lstdiffMag):
plt.plot(indices, y[indices], "x")
l = plt.plot(lstfrm, lstdiffMag, 'r-')
plt.xlabel('frames')
plt.ylabel('pixel difference')
plt.title("Pixel value differences from frame to frame and the peak values")
plt.show()