File size: 651 Bytes
234134b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr

import cv2
import PIL

def get_frame_id_from_pct(v, pct):
    return int(v.get(cv2.CAP_PROP_FRAME_COUNT) * pct/100)

def frame2pil(frame):
    return PIL.Image.fromarray(frame, mode="RGB")

def extract_frame(pct, video):
    v = cv2.VideoCapture(video)
    frame_at = get_frame_id_from_pct(v, pct)
    v.set(cv2.CAP_PROP_POS_FRAMES, frame_at)
    ret, frame = v.read()
    return frame2pil(frame)

def process_video(pct, video):

    return extract_frame(pct, video)

app = gr.Interface(fn=process_video,
                    inputs=[gr.Number(label="PCT", ) ,gr.PlayableVideo()]
                    , outputs='image')
app.launch()