Video-Summary/Analyzer.py

58 lines
1.6 KiB
Python
Raw Normal View History

2020-10-07 12:32:41 +00:00
from imutils.video import VideoStream
import argparse
import datetime
import imutils
import time
import cv2
import os
import traceback
import _thread
import imageio
import numpy as np
import matplotlib.pyplot as plt
2020-10-17 22:02:05 +00:00
from VideoReader import VideoReader
from multiprocessing.pool import ThreadPool
import imutils
2020-10-07 12:32:41 +00:00
2020-09-20 20:01:54 +00:00
class Analyzer:
2020-10-17 22:02:05 +00:00
def __init__(self, config):
2020-10-07 12:32:41 +00:00
print("Analyzer constructed")
2020-10-17 22:02:05 +00:00
videoReader = VideoReader(config)
videoReader.fillBuffer()
self.config = config
self.avg = imutils.resize(np.zeros((videoReader.h,videoReader.w,3),np.float), width=config["resizeWidth"])
self.end = videoReader.endFrame
self.c = 0
start = time.time()
fak = 10
while not videoReader.videoEnded():
self.c, frame = videoReader.pop()
if not self.c%fak == 0:
2020-10-07 12:32:41 +00:00
continue
2020-10-17 22:02:05 +00:00
if videoReader.endFrame - self.c <= fak:
break
frame = imutils.resize(frame, width=self.config["resizeWidth"])
self.avg += frame.astype(np.float)/(self.end/fak)
if self.c%(1800*6) == 0:
print(f"{self.c/(60*30)} Minutes processed in {round((time.time() - start), 2)} each")
start = time.time()
#print("done")
videoReader.thread.join()
self.avg = np.array(np.round(self.avg), dtype=np.uint8)
#return self.avg
cv2.imshow("changes overlayed", self.avg)
cv2.waitKey(10) & 0XFF
def average(self, frame):
frame = imutils.resize(frame[1], width=self.config["resizeWidth"])
self.avg += frame.astype(np.float)/(self.end/5)