SuriRaja commited on
Commit
de8a84a
·
1 Parent(s): 8f7a4e6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -22
app.py CHANGED
@@ -5,6 +5,7 @@ from services.video_service import get_random_video_frame
5
  from services.thermal_service import detect_thermal_anomalies
6
  from services.overlay_service import overlay_boxes
7
  from services.metrics_service import update_metrics
 
8
 
9
  # Globals
10
  paused = False
@@ -17,23 +18,25 @@ TEMP_IMAGE_PATH = "temp.jpg"
17
  def monitor_feed():
18
  global paused
19
 
20
- if paused:
21
- frame = cv2.imread(TEMP_IMAGE_PATH)
22
- if frame is None:
 
 
 
23
  frame = get_random_video_frame()
24
- else:
25
- frame = get_random_video_frame()
26
- detected_boxes = detect_thermal_anomalies(frame)
27
- frame = overlay_boxes(frame, detected_boxes)
28
- cv2.imwrite(TEMP_IMAGE_PATH, frame)
29
 
30
- metrics = update_metrics()
31
- return frame[:, :, ::-1], metrics # Convert BGR to RGB for Gradio
 
32
 
33
  # Gradio UI
34
  with gr.Blocks() as app:
35
- gr.Markdown("# \ud83c\udf10 Thermal Anomaly Monitoring Dashboard")
36
-
37
  with gr.Row():
38
  with gr.Column(scale=3):
39
  video_output = gr.Image(label="Live Video Feed", elem_id="video-feed")
@@ -41,34 +44,27 @@ with gr.Blocks() as app:
41
  metrics_output = gr.Label(label="Live Metrics", elem_id="metrics")
42
 
43
  with gr.Row():
44
- pause_btn = gr.Button("\u23F8\ufe0f Pause")
45
- resume_btn = gr.Button("\u25b6\ufe0f Resume")
46
  frame_slider = gr.Slider(0.2, 5, value=1, label="Frame Interval (seconds)")
47
 
48
  def toggle_pause():
49
  global paused
50
  paused = True
51
- return gr.update()
52
 
53
  def toggle_resume():
54
  global paused
55
  paused = False
56
- return gr.update()
57
 
58
  def set_frame_rate(val):
59
  global frame_rate
60
  frame_rate = val
61
- return gr.update()
62
 
63
  pause_btn.click(toggle_pause)
64
  resume_btn.click(toggle_resume)
65
  frame_slider.change(set_frame_rate, inputs=[frame_slider])
66
 
67
- app.stream(
68
- monitor_feed,
69
- outputs=[video_output, metrics_output],
70
- every=lambda: frame_rate
71
- )
72
 
73
  if __name__ == "__main__":
74
  app.launch()
 
5
  from services.thermal_service import detect_thermal_anomalies
6
  from services.overlay_service import overlay_boxes
7
  from services.metrics_service import update_metrics
8
+ import time
9
 
10
  # Globals
11
  paused = False
 
18
  def monitor_feed():
19
  global paused
20
 
21
+ while True:
22
+ if paused:
23
+ frame = cv2.imread(TEMP_IMAGE_PATH)
24
+ if frame is None:
25
+ frame = get_random_video_frame()
26
+ else:
27
  frame = get_random_video_frame()
28
+ detected_boxes = detect_thermal_anomalies(frame)
29
+ frame = overlay_boxes(frame, detected_boxes)
30
+ cv2.imwrite(TEMP_IMAGE_PATH, frame)
 
 
31
 
32
+ metrics = update_metrics()
33
+ yield frame[:, :, ::-1], metrics # Convert BGR to RGB for Gradio
34
+ time.sleep(frame_rate)
35
 
36
  # Gradio UI
37
  with gr.Blocks() as app:
38
+ gr.Markdown("# 🌐 Thermal Anomaly Monitoring Dashboard")
39
+
40
  with gr.Row():
41
  with gr.Column(scale=3):
42
  video_output = gr.Image(label="Live Video Feed", elem_id="video-feed")
 
44
  metrics_output = gr.Label(label="Live Metrics", elem_id="metrics")
45
 
46
  with gr.Row():
47
+ pause_btn = gr.Button("⏸️ Pause")
48
+ resume_btn = gr.Button("▶️ Resume")
49
  frame_slider = gr.Slider(0.2, 5, value=1, label="Frame Interval (seconds)")
50
 
51
  def toggle_pause():
52
  global paused
53
  paused = True
 
54
 
55
  def toggle_resume():
56
  global paused
57
  paused = False
 
58
 
59
  def set_frame_rate(val):
60
  global frame_rate
61
  frame_rate = val
 
62
 
63
  pause_btn.click(toggle_pause)
64
  resume_btn.click(toggle_resume)
65
  frame_slider.change(set_frame_rate, inputs=[frame_slider])
66
 
67
+ app.load(monitor_feed, outputs=[video_output, metrics_output])
 
 
 
 
68
 
69
  if __name__ == "__main__":
70
  app.launch()