|
import gradio as gr |
|
import numpy as np |
|
import cv2 |
|
import os,glob |
|
import json |
|
|
|
with gr.Blocks() as demo: |
|
video_upload = gr.UploadButton(label="Upload the Video", file_types=["video"]) |
|
slider = gr.Slider(maximum=200,interactive=True,steps=1) |
|
frames = [] |
|
def get_frame(video): |
|
frames.clear() |
|
cap = cv2.VideoCapture(video.name) |
|
i = 0 |
|
for i in range(201): |
|
ret, frame = cap.read() |
|
if ret == False: |
|
break |
|
frames.append(frame) |
|
i += 1 |
|
cap.release() |
|
cv2.destroyAllWindows() |
|
video_upload.upload(fn=get_frame, inputs=[video_upload]) |
|
def return_frame(index): |
|
img = frames[index] |
|
return img |
|
slider.change(return_frame,slider,gr.Image(shape=(1280, 720),type="numpy")) |
|
question = gr.Textbox(label="Question") |
|
model_type = gr.CheckboxGroup(["SurgGPT","LCGN"],label="Model Choice") |
|
answer = gr.Textbox(label="Answer") |
|
predict = gr.Button(value="Predict") |
|
def predict_ans(index,question,model_choice): |
|
return "hi" |
|
predict.click(fn=predict_ans,inputs=[slider,question,model_type],outputs=[answer]) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|