File size: 1,703 Bytes
7de892f de2aa9b 3cd966d 6ce3893 caa1229 85d769e e50e349 6ce3893 ba4d1a9 27202f7 5066517 5e5187b a3504d6 5e5187b 6ce3893 63b8881 6ce3893 85d769e 6ce3893 dded11c e50e349 6ce3893 dded11c 27202f7 dc913e2 6ce3893 63b8881 6ce3893 dc913e2 d4ae210 6ce3893 3cd966d 6ce3893 dc913e2 ce6434e 927e8af 7197be0 a3504d6 632ab5a 7197be0 a3504d6 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 54 55 56 57 58 59 60 61 62 63 64 65 |
import spaces
import gradio as gr
import cv2
import numpy as np
import time
import random
from PIL import Image
from transparent_background import Remover
@spaces.GPU()
def doo(video, mode):
if(mode == 'Fast'):
remover = Remover(mode='fast')
else:
remover = Remover()
cap = cv2.VideoCapture(video)
fps = cap.get(cv2.CAP_PROP_FPS)
writer = None
tmpname = random.randint(111111111, 999999999)
processed_frames = 0
start_time = time.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 str(tmpname) + '.mp4'
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img = Image.fromarray(frame).convert('RGB')
if writer is None:
writer = cv2.VideoWriter(str(tmpname) + '.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 str(tmpname) + '.mp4'
examples = [['./input.mp4'],]
css = """
footer {
visibility: hidden;
}
"""
iface = gr.Interface(css=css,
fn=doo,
inputs=["video", gr.components.Radio(['Normal', 'Fast'], label='Select mode', value='Normal', info= 'Normal is more accurate, but takes longer. | Fast has lower accuracy so the process will be faster.')],
outputs="video", examples=examples
)
iface.launch() |