surveillance / app.py
SuriRaja's picture
Update app.py
a812c0f
raw
history blame
1.58 kB
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])