Spaces:
Sleeping
Sleeping
Commit
·
d276007
1
Parent(s):
429fbf1
latest changes
Browse files
app.py
CHANGED
@@ -88,7 +88,6 @@ def predict_live_frames(input_frame):
|
|
88 |
global frame_buffer, current_prediction_label, current_probabilities
|
89 |
|
90 |
if input_frame is None:
|
91 |
-
# If no frame is received (e.g., webcam not active or disconnected)
|
92 |
dummy_frame = np.zeros((200, 400, 3), dtype=np.uint8)
|
93 |
cv2.putText(dummy_frame, "Waiting for webcam input...", (10, 100), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2)
|
94 |
yield dummy_frame
|
@@ -141,9 +140,8 @@ def predict_live_frames(input_frame):
|
|
141 |
# --- 5. Gradio Blocks Interface Setup ---
|
142 |
with gr.Blocks(
|
143 |
title="Real-time Violence Detection", # Title for the browser tab
|
144 |
-
theme=gr.themes.Default(primary_hue=gr.Color(
|
145 |
) as demo:
|
146 |
-
# Optional: Display a title and description clearly, even without buttons
|
147 |
gr.Markdown(
|
148 |
"""
|
149 |
# 🎬 Real-time Violence Detection
|
@@ -155,32 +153,25 @@ with gr.Blocks(
|
|
155 |
)
|
156 |
|
157 |
with gr.Row():
|
158 |
-
# Input: Live webcam feed
|
159 |
-
# We need to set a minimum height and width to ensure the video feed is displayed reasonably
|
160 |
video_input = gr.Video(
|
161 |
sources=["webcam"],
|
162 |
streaming=True,
|
163 |
label="Live Webcam Feed",
|
164 |
-
|
165 |
-
|
166 |
-
width=640 # or None for auto
|
167 |
)
|
168 |
|
169 |
-
# Output: Image component to display processed frames
|
170 |
video_output = gr.Image(
|
171 |
type="numpy",
|
172 |
label="Processed Feed with Predictions",
|
173 |
-
|
174 |
-
|
175 |
-
width=640 # or None for auto
|
176 |
)
|
177 |
|
178 |
-
# Connect the video stream directly to the prediction function
|
179 |
-
# The 'stream' event on gr.Video is triggered as new frames arrive from the webcam.
|
180 |
video_input.stream(
|
181 |
-
predict_live_frames,
|
182 |
-
inputs=video_input,
|
183 |
-
outputs=video_output
|
184 |
)
|
185 |
|
186 |
demo.launch()
|
|
|
88 |
global frame_buffer, current_prediction_label, current_probabilities
|
89 |
|
90 |
if input_frame is None:
|
|
|
91 |
dummy_frame = np.zeros((200, 400, 3), dtype=np.uint8)
|
92 |
cv2.putText(dummy_frame, "Waiting for webcam input...", (10, 100), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2)
|
93 |
yield dummy_frame
|
|
|
140 |
# --- 5. Gradio Blocks Interface Setup ---
|
141 |
with gr.Blocks(
|
142 |
title="Real-time Violence Detection", # Title for the browser tab
|
143 |
+
# REMOVED: theme=gr.themes.Default(primary_hue=gr.Color(...)) to fix the AttributeError
|
144 |
) as demo:
|
|
|
145 |
gr.Markdown(
|
146 |
"""
|
147 |
# 🎬 Real-time Violence Detection
|
|
|
153 |
)
|
154 |
|
155 |
with gr.Row():
|
|
|
|
|
156 |
video_input = gr.Video(
|
157 |
sources=["webcam"],
|
158 |
streaming=True,
|
159 |
label="Live Webcam Feed",
|
160 |
+
height=480,
|
161 |
+
width=640
|
|
|
162 |
)
|
163 |
|
|
|
164 |
video_output = gr.Image(
|
165 |
type="numpy",
|
166 |
label="Processed Feed with Predictions",
|
167 |
+
height=480,
|
168 |
+
width=640
|
|
|
169 |
)
|
170 |
|
|
|
|
|
171 |
video_input.stream(
|
172 |
+
predict_live_frames,
|
173 |
+
inputs=video_input,
|
174 |
+
outputs=video_output
|
175 |
)
|
176 |
|
177 |
demo.launch()
|