Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import cv2 | |
| from PIL import Image | |
| import numpy as np | |
| import sys | |
| import os | |
| from pathlib import Path | |
| from os import listdir | |
| from os.path import isfile, join | |
| import rembg | |
| #frame_num=0 | |
| #frame_count=0 | |
| vid_file="vidcut0001-0250.mp4" | |
| #capture = cv2.VideoCapture(vid_file) | |
| rm_bg0=gr.Interface.load("spaces/Omnibus/fast-bg-remove") | |
| rm_bg1=gr.Interface.load("spaces/Omnibus/fast-bg-remove") | |
| rm_bg2=gr.Interface.load("spaces/Omnibus/fast-bg-remove") | |
| rm_bg3=gr.Interface.load("spaces/Omnibus/fast-bg-remove") | |
| rm_bg4=gr.Interface.load("spaces/Omnibus/fast-bg-remove") | |
| rm_bg5=gr.Interface.load("spaces/Omnibus/fast-bg-remove") | |
| rm_bg6=gr.Interface.load("spaces/Omnibus/fast-bg-remove") | |
| rm_bg7=gr.Interface.load("spaces/Omnibus/fast-bg-remove") | |
| rm_bg8=gr.Interface.load("spaces/Omnibus/fast-bg-remove") | |
| rm_bg9=gr.Interface.load("spaces/Omnibus/fast-bg-remove") | |
| css=''' | |
| .dark .gr-box{ | |
| background:#344d74;!important; | |
| opacity:1;!important; | |
| } | |
| .p-2 { | |
| background:#344d74;!important; | |
| opacity:1;!important; | |
| } | |
| .gap-4 { | |
| background:#6681ab;!important; | |
| opacity:1;!important; | |
| } | |
| .dark .gr-padded{ | |
| background:#21314a;!important; | |
| opacity:1;!important; | |
| } | |
| ''' | |
| def load_video(vid): | |
| new_video_in = str(vid) | |
| capture = cv2.VideoCapture(new_video_in) | |
| frame_count = int(capture.get(cv2.CAP_PROP_FRAME_COUNT)) | |
| tmp_frame='1' | |
| capture.release() | |
| return vid,frame_count,frame_count | |
| global f_proc | |
| f_proc=0 | |
| def preview_function(vid,frame_count, denom): | |
| #if vid==None: | |
| #vid=img_file | |
| new_video_in = str(vid) | |
| capture = cv2.VideoCapture(new_video_in) | |
| global fbox | |
| fbox=[] | |
| cnt=0 | |
| frame_count1= int(frame_count)-int(denom) | |
| for i in range(int(frame_count1)): | |
| if cnt == int(denom): | |
| cnt=0 | |
| capture.set(cv2.CAP_PROP_POS_FRAMES, i-1) | |
| ret, frame_f = capture.read(i-1) | |
| frame_ff = cv2.cvtColor(frame_f, cv2.COLOR_BGR2RGB) | |
| #frame_fff=Image.fromarray(frame_ff) | |
| fbox.append(frame_ff) | |
| else: | |
| pass | |
| cnt+=1 | |
| capture.set(cv2.CAP_PROP_POS_FRAMES, int(frame_count)-1) | |
| ret, frame_f = capture.read() | |
| frame_ff = cv2.cvtColor(frame_f, cv2.COLOR_BGR2RGB) | |
| #frame_fff=Image.fromarray(frame_ff) | |
| fbox.append(frame_ff) | |
| capture.release() | |
| f_box_count=len(fbox) | |
| return fbox, f_box_count | |
| def capture_function(vid=None,img_file=None,frame_count=None,frame_total=None, frame_col=None): | |
| if vid==None: | |
| vid=img_file | |
| new_video_in = str(vid) | |
| capture = cv2.VideoCapture(new_video_in) | |
| fbox=[] | |
| cnt=0 | |
| frame_count1= int(frame_count)-int(denom) | |
| for i in range(int(frame_count1)): | |
| if cnt == int(denom): | |
| cnt=0 | |
| capture.set(cv2.CAP_PROP_POS_FRAMES, i) | |
| ret, frame_f = capture.read(i) | |
| frame_ff = cv2.cvtColor(frame_f, cv2.COLOR_BGR2RGB) | |
| fbox.append(frame_ff) | |
| else: | |
| pass | |
| cnt+=1 | |
| capture.set(cv2.CAP_PROP_POS_FRAMES, int(frame_count)-1) | |
| ret, frame_f = capture.read() | |
| frame_ff = cv2.cvtColor(frame_f, cv2.COLOR_BGR2RGB) | |
| fbox.append(frame_ff) | |
| capture.release() | |
| return fbox | |
| '''[0],fbox[1],fbox[2],fbox[3],fbox[4],fbox[5],fbox[6],fbox[7],fbox[8],fbox[9], | |
| fbox[10],fbox[11],fbox[12],fbox[13],fbox[14],fbox[15],fbox[16],fbox[17],fbox[18],fbox[19], | |
| fbox[20],fbox[21],fbox[22],fbox[23],fbox[24],fbox[25],fbox[26],fbox[27],fbox[28],fbox[29], | |
| fbox[30],fbox[31],fbox[32],fbox[33],fbox[34],fbox[35],fbox[36],fbox[37],fbox[38],fbox[39], | |
| fbox[40],fbox[41],fbox[42],fbox[43],fbox[44],fbox[45],fbox[46],fbox[47],fbox[48],fbox[49], | |
| fbox[50],fbox[51],fbox[52],fbox[53],fbox[54],fbox[55],fbox[56],fbox[57],fbox[58],fbox[59], | |
| fbox[60],fbox[61],fbox[62],fbox[63],fbox[64],fbox[65],fbox[66],fbox[67],fbox[68],fbox[69], | |
| fbox[70],fbox[71],fbox[72],fbox[73],fbox[74],fbox[75],fbox[76],fbox[77],fbox[78],fbox[79], | |
| fbox[80],fbox[81],fbox[82],fbox[83],fbox[84],fbox[85],fbox[86],fbox[87],fbox[88],fbox[89], | |
| fbox[90],fbox[91],fbox[92],fbox[93],fbox[94],fbox[95],fbox[96],fbox[97],fbox[98],fbox[99], | |
| fbox[100]''' | |
| def remove_bg_func0(input): | |
| img=fbox[0+int(input)] | |
| img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| cv2.imwrite(f"b-{input}0.png", img) | |
| output=rm_bg0(f"b-{input}0.png") | |
| return output | |
| def remove_bg_func1(input): | |
| img=fbox[1+int(input)] | |
| img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| cv2.imwrite(f"b-{input}1.png", img) | |
| output=rm_bg1(f"b-{input}1.png") | |
| return output | |
| def remove_bg_func2(input): | |
| img=fbox[2+int(input)] | |
| img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| cv2.imwrite(f"b-{input}2.png", img) | |
| output=rm_bg2(f"b-{input}2.png") | |
| return output | |
| def remove_bg_func3(input): | |
| img=fbox[3+int(input)] | |
| img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| cv2.imwrite(f"b-{input}3.png", img) | |
| output=rm_bg3(f"b-{input}3.png") | |
| return output | |
| def remove_bg_func4(input): | |
| img=fbox[4+int(input)] | |
| img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| cv2.imwrite(f"b-{input}4.png", img) | |
| output=rm_bg4(f"b-{input}4.png") | |
| return output | |
| def remove_bg_func5(input): | |
| img=fbox[5+int(input)] | |
| img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| cv2.imwrite(f"b-{input}5.png", img) | |
| output=rm_bg5(f"b-{input}5.png") | |
| return output | |
| def remove_bg_func6(input): | |
| img=fbox[6+int(input)] | |
| img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| cv2.imwrite(f"b-{input}6.png", img) | |
| output=rm_bg6(f"b-{input}6.png") | |
| return output | |
| def remove_bg_func7(input): | |
| img=fbox[7+int(input)] | |
| img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| cv2.imwrite(f"b-{input}7.png", img) | |
| output=rm_bg7(f"b-{input}7.png") | |
| return output | |
| def remove_bg_func8(input): | |
| img=fbox[8+int(input)] | |
| img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| cv2.imwrite(f"b-{input}8.png", img) | |
| output=rm_bg8(f"b-{input}8.png") | |
| return output | |
| def remove_bg_func9(input): | |
| img=fbox[9+int(input)] | |
| img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| cv2.imwrite(f"b-{input}9.png", img) | |
| output=rm_bg9(f"b-{input}9.png") | |
| return output | |
| def main(): | |
| with gr.Blocks(css=css) as demo: | |
| with gr.Box(): | |
| with gr.Group(): | |
| with gr.Row(): | |
| with gr.Column(): | |
| #vid=gr.Video(gr_input_type="file") | |
| #vid=gr.PlayableVideo(value=vid_file, gr_input_type="filepath", file_extensions="mp4", visible=True) | |
| vid=gr.Video(type="filepath", format="mp4", visible=True) | |
| img_file=gr.Textbox(value=f"{vid_file}") | |
| with gr.Row(): | |
| pv_btn=gr.Button("Preview Frames") | |
| go_btn=gr.Button("Capture Frames") | |
| ex_btn=gr.Button("Load Example") | |
| with gr.Column(): | |
| with gr.Box(): | |
| #frame_slider=gr.Slider(1, frame_count=frame_count, value=frame_num, step=1) | |
| with gr.Row(): | |
| every_n=gr.Textbox(label="every_n",value='10') | |
| frame_tot=gr.Textbox(label="Total Frames",value='0') | |
| with gr.Row(): | |
| idk=gr.Textbox(label="",value='10') | |
| frames_to_proc=gr.Textbox(label="Selected Frames",value='0') | |
| with gr.Row(): | |
| start_box=gr.Textbox(label="Start",value='0', interactive=True) | |
| end_box=gr.Textbox(label="End",value='0', interactive=True) | |
| with gr.Row(): | |
| with gr.Column(): | |
| with gr.Row(): | |
| f_1_btn=gr.Button("8") | |
| f_2_btn=gr.Button("12") | |
| f_3_btn=gr.Button("16") | |
| f_4_btn=gr.Button("36") | |
| with gr.Row(): | |
| bg_rgb_btn=gr.Button("Remove BG RGB") | |
| depth_btn=gr.Button("Depth Frames") | |
| bg_dpt_btn=gr.Button("Remove BG Depth") | |
| make_3d=gr.Button("Make 3D") | |
| with gr.Tab("RGB"): | |
| with gr.Column(): | |
| with gr.Row(): | |
| fw1=gr.Gallery(label="Main", type="filepath").style(grid=10) | |
| with gr.Row(): | |
| file_out=gr.File(file_count="list") | |
| with gr.Tab("Remove BG RGB"): | |
| with gr.Column(): | |
| with gr.Row(): | |
| f_proc=gr.Textbox(label="Frames Processed", show_progress=False) | |
| #with gr.Group(): | |
| with gr.Group(): | |
| with gr.Row(): | |
| #with gr.Row(): | |
| bdfw1=gr.Pil(label="Frame 1", type="filepath") | |
| bdfw2=gr.Pil(label="Frame 2", type="filepath") | |
| bdfw3=gr.Pil(label="Frame 3", type="filepath") | |
| bdfw4=gr.Pil(label="Frame 4", type="filepath") | |
| bdfw5=gr.Pil(label="Frame 5", type="filepath") | |
| bdfw6=gr.Pil(label="Frame 6", type="filepath") | |
| bdfw7=gr.Pil(label="Frame 7", type="filepath") | |
| bdfw8=gr.Pil(label="Frame 8", type="filepath") | |
| bdfw9=gr.Pil(label="Frame 9", type="filepath") | |
| bdfw10=gr.Pil(label="Frame 10", type="filepath") | |
| bdfw11=gr.Pil(label="Frame 11", type="filepath") | |
| bdfw12=gr.Pil(label="Frame 12", type="filepath") | |
| bdfw13=gr.Pil(label="Frame 13", type="filepath") | |
| bdfw14=gr.Pil(label="Frame 14", type="filepath") | |
| bdfw15=gr.Pil(label="Frame 15", type="filepath") | |
| bdfw16=gr.Pil(label="Frame 16", type="filepath") | |
| bdfw17=gr.Pil(label="Frame 17", type="filepath") | |
| bdfw18=gr.Pil(label="Frame 18", type="filepath") | |
| bdfw19=gr.Pil(label="Frame 19", type="filepath") | |
| bdfw20=gr.Pil(label="Frame 20", type="filepath") | |
| bdfw21=gr.Pil(label="Frame 21", type="filepath") | |
| bdfw22=gr.Pil(label="Frame 22", type="filepath") | |
| bdfw23=gr.Pil(label="Frame 23", type="filepath") | |
| bdfw24=gr.Pil(label="Frame 24", type="filepath") | |
| bdfw25=gr.Pil(label="Frame 25", type="filepath") | |
| bdfw26=gr.Pil(label="Frame 26", type="filepath") | |
| bdfw27=gr.Pil(label="Frame 27", type="filepath") | |
| bdfw28=gr.Pil(label="Frame 28", type="filepath") | |
| bdfw29=gr.Pil(label="Frame 29", type="filepath") | |
| bdfw30=gr.Pil(label="Frame 30", type="filepath") | |
| bdfw31=gr.Pil(label="Frame 31", type="filepath") | |
| bdfw32=gr.Pil(label="Frame 32", type="filepath") | |
| bdfw33=gr.Pil(label="Frame 33", type="filepath") | |
| bdfw34=gr.Pil(label="Frame 34", type="filepath") | |
| bdfw35=gr.Pil(label="Frame 35", type="filepath") | |
| bdfw36=gr.Pil(label="Frame 36", type="filepath") | |
| bdfw37=gr.Pil(label="Frame 37", type="filepath") | |
| bdfw38=gr.Pil(label="Frame 38", type="filepath") | |
| bdfw39=gr.Pil(label="Frame 39", type="filepath") | |
| bdfw40=gr.Pil(label="Frame 40", type="filepath") | |
| bdfw41=gr.Pil(label="Frame 41", type="filepath") | |
| bdfw42=gr.Pil(label="Frame 42", type="filepath") | |
| bdfw43=gr.Pil(label="Frame 43", type="filepath") | |
| bdfw44=gr.Pil(label="Frame 44", type="filepath") | |
| bdfw45=gr.Pil(label="Frame 45", type="filepath") | |
| bdfw46=gr.Pil(label="Frame 46", type="filepath") | |
| bdfw47=gr.Pil(label="Frame 47", type="filepath") | |
| bdfw48=gr.Pil(label="Frame 48", type="filepath") | |
| bdfw49=gr.Pil(label="Frame 49", type="filepath") | |
| bdfw50=gr.Pil(label="Frame 50", type="filepath") | |
| with gr.Tab("Process", visible=False): | |
| inpu1=gr.Textbox(value=0, visible=False) | |
| inpu2=gr.Textbox(value=10, visible=False) | |
| inpu3=gr.Textbox(value=20, visible=False) | |
| inpu4=gr.Textbox(value=30, visible=False) | |
| inpu5=gr.Textbox(value=40, visible=False) | |
| bg_rgb_btn.click(remove_bg_func0, inputs=[inpu1], outputs=[bdfw1]) | |
| bg_rgb_btn.click(remove_bg_func1, inputs=[inpu1], outputs=[bdfw2]) | |
| bg_rgb_btn.click(remove_bg_func2, inputs=[inpu1], outputs=[bdfw3]) | |
| bg_rgb_btn.click(remove_bg_func3, inputs=[inpu1], outputs=[bdfw4]) | |
| bg_rgb_btn.click(remove_bg_func4, inputs=[inpu1], outputs=[bdfw5]) | |
| bg_rgb_btn.click(remove_bg_func5, inputs=[inpu1], outputs=[bdfw6]) | |
| bg_rgb_btn.click(remove_bg_func6, inputs=[inpu1], outputs=[bdfw7]) | |
| bg_rgb_btn.click(remove_bg_func7, inputs=[inpu1], outputs=[bdfw8]) | |
| bg_rgb_btn.click(remove_bg_func8, inputs=[inpu1], outputs=[bdfw9]) | |
| bg_rgb_btn.click(remove_bg_func9, inputs=[inpu1], outputs=[bdfw10]) | |
| bdfw1.change(remove_bg_func0, inputs=[inpu2], outputs=[bdfw11]) | |
| bdfw2.change(remove_bg_func1, inputs=[inpu2], outputs=[bdfw12]) | |
| bdfw3.change(remove_bg_func2, inputs=[inpu2], outputs=[bdfw13]) | |
| bdfw4.change(remove_bg_func3, inputs=[inpu2], outputs=[bdfw14]) | |
| bdfw5.change(remove_bg_func4, inputs=[inpu2], outputs=[bdfw15]) | |
| bdfw6.change(remove_bg_func5, inputs=[inpu2], outputs=[bdfw16]) | |
| bdfw7.change(remove_bg_func6, inputs=[inpu2], outputs=[bdfw17]) | |
| bdfw8.change(remove_bg_func7, inputs=[inpu2], outputs=[bdfw18]) | |
| bdfw9.change(remove_bg_func8, inputs=[inpu2], outputs=[bdfw19]) | |
| bdfw10.change(remove_bg_func9, inputs=[inpu2], outputs=[bdfw20]) | |
| bdfw11.change(remove_bg_func0, inputs=[inpu3], outputs=[bdfw21]) | |
| bdfw12.change(remove_bg_func1, inputs=[inpu3], outputs=[bdfw22]) | |
| bdfw13.change(remove_bg_func2, inputs=[inpu3], outputs=[bdfw23]) | |
| bdfw14.change(remove_bg_func3, inputs=[inpu3], outputs=[bdfw24]) | |
| bdfw15.change(remove_bg_func4, inputs=[inpu3], outputs=[bdfw25]) | |
| bdfw16.change(remove_bg_func5, inputs=[inpu3], outputs=[bdfw26]) | |
| bdfw17.change(remove_bg_func6, inputs=[inpu3], outputs=[bdfw27]) | |
| bdfw18.change(remove_bg_func7, inputs=[inpu3], outputs=[bdfw28]) | |
| bdfw19.change(remove_bg_func8, inputs=[inpu3], outputs=[bdfw29]) | |
| bdfw20.change(remove_bg_func9, inputs=[inpu3], outputs=[bdfw30]) | |
| bdfw21.change(remove_bg_func0, inputs=[inpu4], outputs=[bdfw31]) | |
| bdfw22.change(remove_bg_func1, inputs=[inpu4], outputs=[bdfw32]) | |
| bdfw23.change(remove_bg_func2, inputs=[inpu4], outputs=[bdfw33]) | |
| bdfw24.change(remove_bg_func3, inputs=[inpu4], outputs=[bdfw34]) | |
| bdfw25.change(remove_bg_func4, inputs=[inpu4], outputs=[bdfw35]) | |
| bdfw26.change(remove_bg_func5, inputs=[inpu4], outputs=[bdfw36]) | |
| bdfw27.change(remove_bg_func6, inputs=[inpu4], outputs=[bdfw37]) | |
| bdfw28.change(remove_bg_func7, inputs=[inpu4], outputs=[bdfw38]) | |
| bdfw29.change(remove_bg_func8, inputs=[inpu4], outputs=[bdfw39]) | |
| bdfw30.change(remove_bg_func9, inputs=[inpu4], outputs=[bdfw40]) | |
| bdfw31.change(remove_bg_func0, inputs=[inpu5], outputs=[bdfw41]) | |
| bdfw32.change(remove_bg_func1, inputs=[inpu5], outputs=[bdfw42]) | |
| bdfw33.change(remove_bg_func2, inputs=[inpu5], outputs=[bdfw43]) | |
| bdfw34.change(remove_bg_func3, inputs=[inpu5], outputs=[bdfw44]) | |
| bdfw35.change(remove_bg_func4, inputs=[inpu5], outputs=[bdfw45]) | |
| bdfw36.change(remove_bg_func5, inputs=[inpu5], outputs=[bdfw46]) | |
| bdfw37.change(remove_bg_func6, inputs=[inpu5], outputs=[bdfw47]) | |
| bdfw38.change(remove_bg_func7, inputs=[inpu5], outputs=[bdfw48]) | |
| bdfw39.change(remove_bg_func8, inputs=[inpu5], outputs=[bdfw49]) | |
| bdfw40.change(remove_bg_func9, inputs=[inpu5], outputs=[bdfw50]) | |
| vid.change(load_video, inputs=[vid], outputs=[vid,frame_tot,end_box]) | |
| ex_btn.click(load_video, inputs=[img_file], outputs=[vid,frame_tot,end_box]) | |
| pv_btn.click(preview_function,inputs=[vid, frame_tot, every_n],outputs=[fw1,frames_to_proc]) | |
| demo.queue(concurrency_count=120) | |
| demo.launch(enable_queue=True, max_threads=120) | |
| if __name__ == "__main__": | |
| main() |