Layer Merging works as intended
This commit is contained in:
parent
16c98fb8bd
commit
f08f71f9c7
|
|
@ -42,35 +42,25 @@ class Exporter:
|
||||||
start = time.time()
|
start = time.time()
|
||||||
for i, layer in enumerate(layers):
|
for i, layer in enumerate(layers):
|
||||||
print(f"\r {i}/{len(layers)} {round(i/len(layers)*100,2)}% {round((time.time() - start), 2)}s", end='\r')
|
print(f"\r {i}/{len(layers)} {round(i/len(layers)*100,2)}% {round((time.time() - start), 2)}s", end='\r')
|
||||||
|
|
||||||
if len(layer.bounds[0]) == 0:
|
if len(layer.bounds[0]) == 0:
|
||||||
continue
|
continue
|
||||||
videoReader = VideoReader(self.config)
|
videoReader = VideoReader(self.config)
|
||||||
listOfFrames = self.makeListOfFrames([layer])
|
listOfFrames = self.makeListOfFrames([layer])
|
||||||
|
|
||||||
videoReader.fillBuffer(listOfFrames)
|
videoReader.fillBuffer(listOfFrames)
|
||||||
|
|
||||||
while not videoReader.videoEnded():
|
while not videoReader.videoEnded():
|
||||||
frameCount, frame = videoReader.pop()
|
frameCount, frame = videoReader.pop()
|
||||||
|
|
||||||
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
||||||
|
|
||||||
frame2 = np.copy(underlay)
|
frame2 = np.copy(underlay)
|
||||||
for (x, y, w, h) in layer.bounds[frameCount - layer.startFrame]:
|
for (x, y, w, h) in layer.bounds[frameCount - layer.startFrame]:
|
||||||
if x is None:
|
if x is None:
|
||||||
continue
|
continue
|
||||||
factor = videoReader.w / self.resizeWidth
|
factor = videoReader.w / self.resizeWidth
|
||||||
x = int(x * factor)
|
x, y, w, h = (int(x * factor), int(y * factor), int(w * factor), int(h * factor))
|
||||||
y = int(y * factor)
|
|
||||||
w = int(w * factor)
|
|
||||||
h = int(h * factor)
|
|
||||||
|
|
||||||
frame2[y:y+h, x:x+w] = np.copy(frame[y:y+h, x:x+w])
|
frame2[y:y+h, x:x+w] = np.copy(frame[y:y+h, x:x+w])
|
||||||
|
|
||||||
cv2.putText(frame2, str(i) + " " + str(int(frameCount/self.fps)), (int(x+w/2), int(y+h/2)), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,255,255), 2)
|
cv2.putText(frame2, str(i) + " " + str(int(frameCount/self.fps)), (int(x+w/2), int(y+h/2)), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,255,255), 2)
|
||||||
cv2.putText(frame2, str(layer.stats["avg"]) + " " + str(layer.stats["var"]) + " " + str(layer.stats["dev"]), (int(500), int(500)), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,0,255), 2)
|
cv2.putText(frame2, str(layer.stats["avg"]) + " " + str(layer.stats["var"]) + " " + str(layer.stats["dev"]), (int(500), int(500)), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,0,255), 2)
|
||||||
writer.append_data(frame2)
|
writer.append_data(frame2)
|
||||||
|
|
||||||
videoReader.vc.release()
|
videoReader.vc.release()
|
||||||
videoReader.thread.join()
|
videoReader.thread.join()
|
||||||
videoReader.vc.release()
|
videoReader.vc.release()
|
||||||
|
|
@ -107,14 +97,10 @@ class Exporter:
|
||||||
underlay1 = underlay
|
underlay1 = underlay
|
||||||
(x, y, w, h) = layer.bounds[frameCount - layer.startFrame][i]
|
(x, y, w, h) = layer.bounds[frameCount - layer.startFrame][i]
|
||||||
mask = layer.masks[frameCount - layer.startFrame][i]
|
mask = layer.masks[frameCount - layer.startFrame][i]
|
||||||
|
|
||||||
if x is None:
|
if x is None:
|
||||||
break
|
break
|
||||||
factor = videoReader.w / self.resizeWidth
|
factor = videoReader.w / self.resizeWidth
|
||||||
x = int(x * factor)
|
x, y, w, h = (int(x * factor), int(y * factor), int(w * factor), int(h * factor))
|
||||||
y = int(y * factor)
|
|
||||||
w = int(w * factor)
|
|
||||||
h = int(h * factor)
|
|
||||||
|
|
||||||
mask = imutils.resize(mask, width=w, height=h+1)
|
mask = imutils.resize(mask, width=w, height=h+1)
|
||||||
mask = np.resize(mask, (h,w))
|
mask = np.resize(mask, (h,w))
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ class LayerFactory:
|
||||||
for layer in layers[1:]:
|
for layer in layers[1:]:
|
||||||
for i, (contours, masks) in enumerate(zip(layer.bounds, layer.masks)):
|
for i, (contours, masks) in enumerate(zip(layer.bounds, layer.masks)):
|
||||||
for contour, mask in zip(contours, masks):
|
for contour, mask in zip(contours, masks):
|
||||||
layer1.add(layer.startFrame, contour, mask)
|
layer1.add(layer.startFrame + i, contour, mask)
|
||||||
|
|
||||||
for i, id in enumerate(foundLayerIDs):
|
for i, id in enumerate(foundLayerIDs):
|
||||||
del self.layers[id - i]
|
del self.layers[id - i]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue