Video-Summary/Exporter.py

70 lines
2.3 KiB
Python

import imageio
import imutils
import numpy as np
from Layer import Layer
import cv2
class Exporter:
fps = 30
def __init__(self):
print("Exporter initiated")
def export(self, frames, outputPath):
fps = self.fps
writer = imageio.get_writer(outputPath, fps=fps)
for frame in frames:
writer.append_data(np.array(frame))
writer.close()
def exportLayers(self, layers, outputPath):
fps = self.fps
writer = imageio.get_writer(outputPath, fps=fps)
i=0
for layer in layers:
data = layer.data
if len(data) < 10:
continue
for frame in data:
(x, y, w, h) = frame[1]
frame = frame[0]
frame1 = np.zeros(shape=[1080, 1920, 3], dtype=np.uint8)
frame1 = imutils.resize(frame1, width=512)
frame1[y:y+frame.shape[0], x:x+frame.shape[1]] = frame
cv2.putText(frame1, str(i), (30,30), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,255,255), 2)
writer.append_data(np.array(frame1))
#cv2.imshow("changes overlayed", frame)
#cv2.waitKey(10) & 0XFF
i += 1
writer.close()
#cv2.destroyAllWindows()
def exportOverlayed(self, underlay, layers, outputPath, resizeWidth):
fps = self.fps
writer = imageio.get_writer(outputPath, fps=fps)
maxLength = self.getMaxLengthOfLayers(layers)
for i in range(maxLength):
frame1 = underlay
frame1 = imutils.resize(frame1, width=resizeWidth)
frame1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2RGB)
for layer in layers:
data = layer.data
if len(layer.data) > i:
(x, y, w, h) = layer.bounds[i]
frame = layer.data[i]
if frame is not None:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
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