Spaces:
Runtime error
Runtime error
| 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() |