Spaces:
Running
on
Zero
Running
on
Zero
File size: 1,446 Bytes
077d557 de2aa9b 3cd966d 6ce3893 caa1229 e50e349 6ce3893 ba4d1a9 6ce3893 5066517 6ce3893 63b8881 6ce3893 63b8881 6ce3893 dded11c 23895f6 e50e349 6ce3893 dded11c 5066517 dded11c 23895f6 dded11c 6ce3893 63b8881 6ce3893 d4ae210 6ce3893 3cd966d 6ce3893 5be44ed ce6434e 5066517 63b8881 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
import spaces
import gradio as gr
import cv2
import numpy as np
import time
from PIL import Image
from transparent_background import Remover
@spaces.GPU
def doo(video, mode):
if(mode == 'Normal'):
remover = Remover()
if(mode == 'Fast'):
remover = Remover(mode='fast')
cap = cv2.VideoCapture(video)
fps = cap.get(cv2.CAP_PROP_FPS)
writer = None
processed_frames = 0
start_time = time.time()
print(start_time)
while cap.isOpened():
ret, frame = cap.read()
if ret is False:
break
if time.time() - start_time >= 55:
print("GPU Timeout is coming")
cap.release()
writer.release()
return 'output.mp4'
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img = Image.fromarray(frame).convert('RGB')
if writer is None:
writer = cv2.VideoWriter('output.mp4', cv2.VideoWriter_fourcc(*'mp4v'), fps, img.size)
processed_frames += 1
print(f"Processing: {processed_frames}")
out = remover.process(img, type='green')
writer.write(cv2.cvtColor(np.array(out), cv2.COLOR_BGR2RGB))
cap.release()
writer.release()
return 'output.mp4'
iface = gr.Interface(fn=doo, [gr.inputs.Video(type='filepath'),
gr.inputs.Radio(['Normal','Fast'], type="value", default='Fast', label='Select mode')], outputs="video")
iface.launch() |