SuriRaja commited on
Commit
931480f
1 Parent(s): 4e2d873

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -48
app.py CHANGED
@@ -1,73 +1,78 @@
1
- import gradio as gr
2
- import cv2
3
  import os
 
4
  import random
5
  import time
 
 
6
  from services.video_service import get_random_video_frame
7
  from services.overlay_service import overlay_boxes
8
 
9
  # Constants
10
- TEMP_IMAGE_PATH = "temp_frame.jpg"
11
- VIDEOS_FOLDER = "videos"
12
 
13
- # App states
14
- app_state = {"paused": False}
 
15
 
16
- # Live metrics
17
- live_metrics = {
18
- "Frames Processed": 0,
19
- "Current FPS": 1,
20
- "Detections": 0,
21
  }
22
 
23
- def monitor_feed(frame_rate=1):
 
 
24
  while True:
25
- if not app_state["paused"]:
26
- frame, label = get_random_video_frame()
27
- if frame is not None:
28
- frame_with_overlay = overlay_boxes(frame, label)
29
- cv2.imwrite(TEMP_IMAGE_PATH, frame_with_overlay)
30
- live_metrics["Frames Processed"] += 1
31
- live_metrics["Current FPS"] = frame_rate
32
- else:
33
- continue # Skip if frame is None
34
- time.sleep(1.0 / frame_rate)
35
- yield TEMP_IMAGE_PATH, format_metrics()
36
-
37
- def format_metrics():
38
- return (f"Frames Processed: {live_metrics['Frames Processed']}\n"
39
- f"Current FPS: {live_metrics['Current FPS']}\n"
40
- f"Detections: {live_metrics['Detections']}")
 
 
 
41
 
42
  def toggle_pause():
43
- app_state["paused"] = not app_state["paused"]
44
- return "鈻讹笍 Resume" if app_state["paused"] else "鈴革笍 Pause"
 
45
 
46
- def build_interface():
47
- with gr.Blocks() as app:
48
- gr.Markdown("# Solar Surveillance System \ud83c\udf0c")
 
49
 
 
 
 
 
50
  with gr.Row():
51
- video_output = gr.Image(label="Live Feed", elem_id="video-stream")
52
- metrics_output = gr.Textbox(label="Live Metrics")
53
 
54
  with gr.Row():
55
- with gr.Column():
56
- pause_button = gr.Button("鈴革笍 Pause")
57
- frame_slider = gr.Slider(1, 10, value=1, step=1, label="Frame Rate (FPS)")
58
 
59
- runner = gr.Interface(
60
- fn=monitor_feed,
61
- inputs=frame_slider,
62
- outputs=[video_output, metrics_output],
63
- live=True,
64
- concurrency_limit=1
65
- )
66
 
67
- pause_button.click(toggle_pause, outputs=pause_button)
68
 
69
- return app
70
 
71
  if __name__ == "__main__":
72
  demo = build_interface()
73
- demo.launch()
 
 
 
1
  import os
2
+ import cv2
3
  import random
4
  import time
5
+ import gradio as gr
6
+ import numpy as np
7
  from services.video_service import get_random_video_frame
8
  from services.overlay_service import overlay_boxes
9
 
10
  # Constants
11
+ TEMP_IMAGE_PATH = "temp.jpg"
 
12
 
13
+ # Global control flags
14
+ is_paused = False
15
+ frame_rate = 1 # Default frame rate (frames per second)
16
 
17
+ # Live Metrics
18
+ metrics = {
19
+ "total_frames": 0,
20
+ "detected_objects": 0,
 
21
  }
22
 
23
+ def monitor_feed():
24
+ global is_paused, frame_rate, metrics
25
+
26
  while True:
27
+ if not is_paused:
28
+ frame, anomaly_label = get_random_video_frame()
29
+
30
+ if frame is None:
31
+ time.sleep(1)
32
+ continue
33
+
34
+ # Overlay anomaly text
35
+ frame = overlay_boxes(frame, anomaly_label)
36
+
37
+ # Save temporary image
38
+ cv2.imwrite(TEMP_IMAGE_PATH, frame)
39
+
40
+ metrics["total_frames"] += 1
41
+ metrics["detected_objects"] += random.randint(1, 3) # Simulated detection count
42
+
43
+ yield TEMP_IMAGE_PATH, f"Frames: {metrics['total_frames']}, Detections: {metrics['detected_objects']}"
44
+
45
+ time.sleep(1 / max(frame_rate, 1))
46
 
47
  def toggle_pause():
48
+ global is_paused
49
+ is_paused = not is_paused
50
+ return "Paused" if is_paused else "Running"
51
 
52
+ def set_frame_rate(new_rate):
53
+ global frame_rate
54
+ frame_rate = new_rate
55
+ return f"Frame Rate: {frame_rate} fps"
56
 
57
+ def build_interface():
58
+ with gr.Blocks() as demo:
59
+ gr.Markdown("# Solar Surveillance POC")
60
+
61
  with gr.Row():
62
+ video_output = gr.Image(label="Live Feed")
63
+ metrics_output = gr.Label(label="Live Metrics")
64
 
65
  with gr.Row():
66
+ pause_button = gr.Button("Pause / Resume")
67
+ frame_rate_slider = gr.Slider(1, 10, value=1, label="Frame Rate (frames/sec)")
 
68
 
69
+ pause_button.click(toggle_pause, outputs=[])
70
+ frame_rate_slider.change(set_frame_rate, inputs=frame_rate_slider, outputs=[])
 
 
 
 
 
71
 
72
+ demo.load(monitor_feed, outputs=[video_output, metrics_output], every=None)
73
 
74
+ return demo
75
 
76
  if __name__ == "__main__":
77
  demo = build_interface()
78
+ demo.launch(share=True) # Important for Hugging Face Spaces!