SuriRaja commited on
Commit
8b83c1d
·
1 Parent(s): d95bdc7

Update app.py

Browse files

Solving issues

Files changed (1) hide show
  1. app.py +18 -5
app.py CHANGED
@@ -2,6 +2,7 @@ import gradio as gr
2
  import cv2
3
  import time
4
  import os
 
5
  from services.video_service import get_next_video_frame
6
  from services.thermal_service import detect_thermal_anomalies
7
  from services.overlay_service import overlay_boxes
@@ -10,6 +11,7 @@ from services.metrics_service import update_metrics
10
  # Globals
11
  paused = False
12
  frame_rate = 1
 
13
 
14
  # Constants
15
  TEMP_IMAGE_PATH = "temp.jpg"
@@ -17,6 +19,7 @@ TEMP_IMAGE_PATH = "temp.jpg"
17
  # Core monitor function
18
  def monitor_feed():
19
  global paused
 
20
 
21
  frame = None
22
 
@@ -30,18 +33,26 @@ def monitor_feed():
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
  frame = cv2.resize(frame, (640, 480)) # Resize frame to fixed window size
39
 
 
 
 
 
 
 
40
  return frame[:, :, ::-1], metrics # BGR to RGB
41
 
42
  # Gradio UI
43
- with gr.Blocks() as app:
44
- gr.Markdown("# 🌐 Thermal Anomaly Monitoring Dashboard")
 
 
45
 
46
  with gr.Row():
47
  with gr.Column(scale=3):
@@ -57,17 +68,19 @@ with gr.Blocks() as app:
57
  def toggle_pause():
58
  global paused
59
  paused = True
 
60
 
61
  def toggle_resume():
62
  global paused
63
  paused = False
 
64
 
65
  def set_frame_rate(val):
66
  global frame_rate
67
  frame_rate = val
68
 
69
- pause_btn.click(toggle_pause)
70
- resume_btn.click(toggle_resume)
71
  frame_slider.change(set_frame_rate, inputs=[frame_slider])
72
 
73
  def streaming_loop():
 
2
  import cv2
3
  import time
4
  import os
5
+ from datetime import datetime
6
  from services.video_service import get_next_video_frame
7
  from services.thermal_service import detect_thermal_anomalies
8
  from services.overlay_service import overlay_boxes
 
11
  # Globals
12
  paused = False
13
  frame_rate = 1
14
+ frame_count = 0
15
 
16
  # Constants
17
  TEMP_IMAGE_PATH = "temp.jpg"
 
19
  # Core monitor function
20
  def monitor_feed():
21
  global paused
22
+ global frame_count
23
 
24
  frame = None
25
 
 
33
  if not paused:
34
  detected_boxes = detect_thermal_anomalies(frame)
35
  frame = overlay_boxes(frame, detected_boxes)
36
+ cv2.imwrite(TEMP_IMAGE_PATH, frame, [int(cv2.IMWRITE_JPEG_QUALITY), 95])
37
  metrics = update_metrics(detected_boxes)
38
  else:
39
  metrics = update_metrics([])
40
 
41
  frame = cv2.resize(frame, (640, 480)) # Resize frame to fixed window size
42
 
43
+ # Add frame count and timestamp on frame
44
+ frame_count += 1
45
+ timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
46
+ cv2.putText(frame, f"Frame: {frame_count}", (10, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
47
+ cv2.putText(frame, f"{timestamp}", (10, 50), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
48
+
49
  return frame[:, :, ::-1], metrics # BGR to RGB
50
 
51
  # Gradio UI
52
+ with gr.Blocks(theme=gr.themes.Soft()) as app:
53
+ gr.Markdown("# 🌐 Thermal Anomaly Monitoring Dashboard", elem_id="main-title")
54
+
55
+ status_text = gr.Markdown("**Status:** 🟢 Running", elem_id="status-banner")
56
 
57
  with gr.Row():
58
  with gr.Column(scale=3):
 
68
  def toggle_pause():
69
  global paused
70
  paused = True
71
+ return "**Status:** ⏸️ Paused"
72
 
73
  def toggle_resume():
74
  global paused
75
  paused = False
76
+ return "**Status:** 🟢 Running"
77
 
78
  def set_frame_rate(val):
79
  global frame_rate
80
  frame_rate = val
81
 
82
+ pause_btn.click(toggle_pause, outputs=status_text)
83
+ resume_btn.click(toggle_resume, outputs=status_text)
84
  frame_slider.change(set_frame_rate, inputs=[frame_slider])
85
 
86
  def streaming_loop():