Spaces:
Runtime error
Runtime error
import cv2 | |
import time | |
import os | |
from services.video_service import get_random_video_frame | |
from services.thermal_service import detect_thermal_anomalies | |
from services.overlay_service import overlay_boxes | |
from services.metrics_service import update_metrics | |
paused = False | |
frame_rate = 1.0 # seconds | |
def monitor_feed(): | |
global paused | |
if paused: | |
frame = get_random_video_frame() # Still fetch to keep system active | |
else: | |
frame = get_random_video_frame() | |
detected_boxes = detect_thermal_anomalies(frame) | |
frame = overlay_boxes(frame, detected_boxes) | |
metrics = update_metrics(detected_boxes) | |
return frame[:, :, ::-1], metrics # BGR → RGB | |
return frame[:, :, ::-1], {"Detections": 0} | |
with gr.Blocks() as app: | |
gr.Markdown("# 🌡️ Solar Surveillance Thermal Monitoring") | |
with gr.Row(): | |
with gr.Column(scale=3): | |
video_output = gr.Image(label="Live Video Feed", elem_id="video-feed") | |
with gr.Column(scale=1): | |
metrics_output = gr.Label(label="Detection Metrics") | |
with gr.Row(): | |
pause_btn = gr.Button("⏸️ Pause") | |
resume_btn = gr.Button("▶️ Resume") | |
frame_slider = gr.Slider(0.5, 5.0, step=0.1, value=1.0, label="Frame Interval (seconds)") | |
def toggle_pause(): | |
global paused | |
def streaming_loop(): | |
while True: | |
frame, metrics = monitor_feed() | |
yield frame, metrics | |
time.sleep(frame_rate) | |
app.load(streaming_loop, outputs=[video_output, metrics_output]) |