extractframe / app.py
misza222's picture
Create app.py
234134b
raw
history blame contribute delete
651 Bytes
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()