overlay works
This commit is contained in:
parent
0ce61c655a
commit
5837e6330e
|
|
@ -1,2 +1,4 @@
|
||||||
|
|
||||||
generate test footage/images/
|
generate test footage/images/
|
||||||
|
|
||||||
|
generate test footage/3.MP4
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ class ContourExtractor:
|
||||||
|
|
||||||
#X = {frame_number: [(contour, (x,y,w,h)), ...], }
|
#X = {frame_number: [(contour, (x,y,w,h)), ...], }
|
||||||
extractedContours = dict()
|
extractedContours = dict()
|
||||||
min_area = 200
|
min_area = 100
|
||||||
max_area = 30000
|
max_area = 50000
|
||||||
threashold = 35
|
threashold = 12
|
||||||
xDim = 0
|
xDim = 0
|
||||||
yDim = 0
|
yDim = 0
|
||||||
|
|
||||||
|
|
@ -50,6 +50,7 @@ class ContourExtractor:
|
||||||
break
|
break
|
||||||
|
|
||||||
frame = imutils.resize(frame, width=500)
|
frame = imutils.resize(frame, width=500)
|
||||||
|
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
||||||
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
||||||
gray = cv2.GaussianBlur(gray, (5, 5), 0)
|
gray = cv2.GaussianBlur(gray, (5, 5), 0)
|
||||||
|
|
||||||
|
|
|
||||||
29
Exporter.py
29
Exporter.py
|
|
@ -38,3 +38,32 @@ class Exporter:
|
||||||
|
|
||||||
writer.close()
|
writer.close()
|
||||||
#cv2.destroyAllWindows()
|
#cv2.destroyAllWindows()
|
||||||
|
|
||||||
|
def exportOverlayed(self, layers, outputPath):
|
||||||
|
fps = self.fps
|
||||||
|
writer = imageio.get_writer(outputPath, fps=fps)
|
||||||
|
|
||||||
|
maxLength = self.getMaxLengthOfLayers(layers)
|
||||||
|
|
||||||
|
for i in range(maxLength):
|
||||||
|
frame1 = np.zeros(shape=[1080, 1920, 3], dtype=np.uint8)
|
||||||
|
frame1 = imutils.resize(frame1, width=512)
|
||||||
|
|
||||||
|
for layer in layers:
|
||||||
|
data = layer.data
|
||||||
|
if len(layer.data) > i:
|
||||||
|
frame = layer.data[i]
|
||||||
|
(x, y, w, h) = frame[1]
|
||||||
|
frame = frame[0]
|
||||||
|
|
||||||
|
frame1[y:y+h, x:x+w] = frame
|
||||||
|
writer.append_data(np.array(frame1))
|
||||||
|
writer.close()
|
||||||
|
|
||||||
|
def getMaxLengthOfLayers(self, layers):
|
||||||
|
maxLength = 0
|
||||||
|
for layer in layers:
|
||||||
|
if layer.getLength() > maxLength:
|
||||||
|
maxLength = layer.getLength()
|
||||||
|
return maxLength
|
||||||
|
|
||||||
|
|
|
||||||
9
Layer.py
9
Layer.py
|
|
@ -3,16 +3,23 @@ class Layer:
|
||||||
|
|
||||||
startFrame = None
|
startFrame = None
|
||||||
lastFrame = None
|
lastFrame = None
|
||||||
|
length = None
|
||||||
|
|
||||||
def __init__(self, startFrame, data):
|
def __init__(self, startFrame, data):
|
||||||
self.startFrame = startFrame
|
self.startFrame = startFrame
|
||||||
self.lastFrame = startFrame
|
self.lastFrame = startFrame
|
||||||
|
|
||||||
self.data = []
|
self.data = []
|
||||||
self.data.append(data)
|
self.data.append(data)
|
||||||
|
|
||||||
print("Layer constructed")
|
#print("Layer constructed")
|
||||||
|
|
||||||
def add(self, frameNumber, data):
|
def add(self, frameNumber, data):
|
||||||
if not (self.startFrame + len(self.data) - frameNumber < 0):
|
if not (self.startFrame + len(self.data) - frameNumber < 0):
|
||||||
self.lastFrame = frameNumber
|
self.lastFrame = frameNumber
|
||||||
self.data.append(data)
|
self.data.append(data)
|
||||||
|
|
||||||
|
def getLength(self):
|
||||||
|
self.length = len(self.data)
|
||||||
|
return self.length
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ from Layer import Layer
|
||||||
class LayerFactory:
|
class LayerFactory:
|
||||||
data = {}
|
data = {}
|
||||||
layers = []
|
layers = []
|
||||||
tolerance = -10
|
tolerance = 5
|
||||||
def __init__(self, data=None):
|
def __init__(self, data=None):
|
||||||
print("LayerFactory constructed")
|
print("LayerFactory constructed")
|
||||||
self.data = data
|
self.data = data
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2
main.py
2
main.py
|
|
@ -24,7 +24,7 @@ def demo():
|
||||||
contours = contourExtractor.getextractedContours()
|
contours = contourExtractor.getextractedContours()
|
||||||
|
|
||||||
layerFactory = LayerFactory(contours)
|
layerFactory = LayerFactory(contours)
|
||||||
Exporter().exportLayers(layerFactory.layers, os.path.join(os.path.dirname(__file__), "./short.mp4"))
|
Exporter().exportOverlayed(layerFactory.layers, os.path.join(os.path.dirname(__file__), "./short.mp4"))
|
||||||
|
|
||||||
def init():
|
def init():
|
||||||
print("not needed yet")
|
print("not needed yet")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue