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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -15
app.py CHANGED
@@ -1,11 +1,11 @@
1
  import gradio as gr
2
  import cv2
3
  import os
 
4
  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
- import time
9
 
10
  # Globals
11
  paused = False
@@ -18,20 +18,24 @@ TEMP_IMAGE_PATH = "temp.jpg"
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:
@@ -64,7 +68,14 @@ with gr.Blocks() as app:
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()
 
1
  import gradio as gr
2
  import cv2
3
  import os
4
+ import time
5
  from services.video_service import get_random_video_frame
6
  from services.thermal_service import detect_thermal_anomalies
7
  from services.overlay_service import overlay_boxes
8
  from services.metrics_service import update_metrics
 
9
 
10
  # Globals
11
  paused = False
 
18
  def monitor_feed():
19
  global paused
20
 
21
+ frame = None
22
+
23
+ if paused:
24
+ if os.path.exists(TEMP_IMAGE_PATH):
25
  frame = cv2.imread(TEMP_IMAGE_PATH)
26
+
27
+ if frame is None:
28
+ frame = get_random_video_frame()
29
+
30
+ if not paused:
31
+ detected_boxes = detect_thermal_anomalies(frame)
32
+ frame = overlay_boxes(frame, detected_boxes)
33
+ cv2.imwrite(TEMP_IMAGE_PATH, frame)
34
+ metrics = update_metrics(detected_boxes)
35
+ else:
36
+ metrics = update_metrics([])
37
+
38
+ return frame[:, :, ::-1], metrics # BGR to RGB
39
 
40
  # Gradio UI
41
  with gr.Blocks() as app:
 
68
  resume_btn.click(toggle_resume)
69
  frame_slider.change(set_frame_rate, inputs=[frame_slider])
70
 
71
+ def streaming_loop():
72
+ while True:
73
+ frame, metrics = monitor_feed()
74
+ video_output.update(value=frame)
75
+ metrics_output.update(value=metrics)
76
+ time.sleep(frame_rate)
77
+
78
+ app.load(streaming_loop)
79
 
80
  if __name__ == "__main__":
81
  app.launch()