Spaces:
Runtime error
Runtime error
File size: 1,709 Bytes
06a815f 4e2d873 8db9899 06a815f e8452a3 06a815f c92e309 06a815f e8452a3 06a815f 931480f 06a815f a421f1e 06a815f e8452a3 06a815f e8452a3 06a815f e8452a3 06a815f 931480f 06a815f e8452a3 06a815f 4e2d873 06a815f 931480f e8452a3 4e2d873 e8452a3 06a815f e8452a3 06a815f e8452a3 06a815f e8452a3 06a815f 4e2d873 e8452a3 8db9899 06a815f |
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 gradio as gr
import cv2
import os
import random
import time
from services.video_service import get_random_video_frame
from services.metrics_service import update_metrics
from services.overlay_service import overlay_boxes
# Constants
TEMP_IMAGE_PATH = "temp_frame.jpg"
VIDEO_FOLDER = "data/sample_videos"
# State Variables
paused = False
frame_rate = 1 # Default 1 FPS
# Helper Functions
def monitor_feed():
global paused
frame = get_random_video_frame()
if frame is None:
return None, update_metrics()
if not paused:
frame = overlay_boxes(frame)
cv2.imwrite(TEMP_IMAGE_PATH, frame)
return TEMP_IMAGE_PATH, update_metrics()
def toggle_pause():
global paused
paused = not paused
def set_frame_rate(value):
global frame_rate
frame_rate = int(value)
def loop_monitor():
while True:
time.sleep(1 / frame_rate if frame_rate > 0 else 1)
yield monitor_feed()
# Gradio App
def build_interface():
with gr.Blocks() as app:
with gr.Row():
with gr.Column():
video_output = gr.Image(label="Live Drone Feed")
with gr.Column():
metrics_output = gr.Label(label="Live Metrics")
with gr.Row():
pause_button = gr.Button("Pause / Resume")
frame_rate_slider = gr.Slider(1, 10, value=1, step=1, label="Frame Rate (Frames per second)")
pause_button.click(toggle_pause)
frame_rate_slider.change(set_frame_rate, inputs=[frame_rate_slider])
app.load(fn=loop_monitor, outputs=[video_output, metrics_output])
return app
# Launch
if __name__ == "__main__":
demo = build_interface()
demo.queue().launch() |