From 73d1ddc74bbeff08464c3014a939c6aa183d1faa Mon Sep 17 00:00:00 2001 From: Askill Date: Wed, 14 Oct 2020 00:16:39 +0200 Subject: [PATCH] insignificant refactor --- Config.py | 3 ++- ContourExctractor.py | 2 +- Exporter.py | 6 ++---- Layer.py | 2 +- LayerFactory.py | 5 ++++- VideoReader.py | 6 +++--- main.py | 7 +++---- 7 files changed, 16 insertions(+), 15 deletions(-) diff --git a/Config.py b/Config.py index 3e3f902..620af3d 100644 --- a/Config.py +++ b/Config.py @@ -12,7 +12,8 @@ class Config: "tolerance": 10, "maxLength": None, "ttolerance": 10, - "videoBufferLength": 16} + "videoBufferLength": 16 + } def __init__(self): print("Current Config:", self.c) diff --git a/ContourExctractor.py b/ContourExctractor.py index f6c8546..db1b568 100644 --- a/ContourExctractor.py +++ b/ContourExctractor.py @@ -63,7 +63,7 @@ class ContourExtractor: while not videoReader.videoEnded(): #FrameCount, frame = videoReader.pop() if frameCount % (60*30) == 0: - print(f"Minutes processed: {frameCount/(60*30)} in {round((time.time() - start), 2)} each") + print(f"{frameCount/(60*30)} Minutes processed in {round((time.time() - start), 2)} each") start = time.time() if videoReader.buffer.qsize() == 0: diff --git a/Exporter.py b/Exporter.py index 6fad200..41150f0 100644 --- a/Exporter.py +++ b/Exporter.py @@ -73,7 +73,7 @@ class Exporter: frames = [underlay]*maxLength exportFrame = 0 - + while not videoReader.videoEnded(): frameCount, frame = videoReader.pop() if frameCount % (60*self.fps) == 0: @@ -81,11 +81,11 @@ class Exporter: if frame is None: print("ContourExtractor: frame was None") continue + frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) for layer in layers: if layer.startFrame <= frameCount and layer.startFrame + len(layer.bounds) > frameCount: for (x, y, w, h) in layer.bounds[frameCount - layer.startFrame]: - (x, y, w, h) = layer.bounds[frameCount - layer.startFrame] factor = videoReader.w / self.resizeWidth x = int(x * factor) y = int(y * factor) @@ -95,8 +95,6 @@ class Exporter: frame2 = frames[frameCount - layer.startFrame] frame2[y:y+h, x:x+w] = frame[y:y+h, x:x+w] frames[frameCount - layer.startFrame] = np.copy(frame2) - - videoReader.thread.join() self.fps = videoReader.getFPS() diff --git a/Layer.py b/Layer.py index f9ed0c6..901a725 100644 --- a/Layer.py +++ b/Layer.py @@ -2,7 +2,7 @@ import numpy as np import cv2 import imutils class Layer: - #bounds = [(contour, (x,y,w,h)),] + #bounds = [[(x,y,w,h), ],] startFrame = None lastFrame = None diff --git a/LayerFactory.py b/LayerFactory.py index fe3737a..1831b96 100644 --- a/LayerFactory.py +++ b/LayerFactory.py @@ -78,10 +78,13 @@ class LayerFactory: if self.contoursOverlay((x-tol,y+h+tol), (x+w+tol,y-tol), (x2,y2+h2), (x2+w2,y2)): self.layers[i].add(frameNumber, (x,y,w,h)) foundLayer = True - #break + break if not foundLayer: self.layers.append(Layer(frameNumber, (x,y,w,h))) + self.freeData() + self.sortLayers() + return self.layers def contoursOverlay(self, l1, r1, l2, r2): # If one rectangle is on left side of other diff --git a/VideoReader.py b/VideoReader.py index fb37343..b3f9de1 100644 --- a/VideoReader.py +++ b/VideoReader.py @@ -9,7 +9,7 @@ from Config import Config class VideoReader: - #buffer = [(frameNumber, frame)] + listOfFrames = None def __init__(self, config, setOfFrames = None): @@ -20,6 +20,7 @@ class VideoReader: self.videoPath = videoPath self.lastFrame = 0 + #buffer = Queue([(frameNumber, frame), ]) self.buffer = Queue(config["videoBufferLength"]) self.vc = cv2.VideoCapture(videoPath) self.stopped = False @@ -81,13 +82,12 @@ class VideoReader: self.vc.set(1, self.listOfFrames[0]) self.lastFrame = self.listOfFrames[0] else: - sleep(0.5) + sleep(0.1) self.stopped = True def videoEnded(self): return self.stopped - def getFPS(self): return self.vc.get(cv2.CAP_PROP_FPS) diff --git a/main.py b/main.py index fa42fc7..4163eee 100644 --- a/main.py +++ b/main.py @@ -20,11 +20,10 @@ def demo(): contours = ContourExtractor(config).extractContours() print("Time consumed extracting: ", time.time() - start) - layerFactory = LayerFactory(config, contours) - layerFactory.freeData() - layerFactory.sortLayers() + layerFactory = LayerFactory(config) + layers = layerFactory.extractLayers(contours) - Exporter(config).exportOverlayed(layerFactory.layers) + Exporter(config).exportOverlayed(layers) print("Total time: ", time.time() - start) def init():