tstone87 commited on
Commit
5c1fa0a
·
verified ·
1 Parent(s): c0792b2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -15
app.py CHANGED
@@ -121,7 +121,7 @@ with tabs[1]:
121
  with col1:
122
  st.markdown("**Webcam Feed**")
123
  st.write("Provide a webcam URL (image or video stream) to monitor for hazards.")
124
- webcam_url = st.text_input("Webcam URL", "https://wms-prod-3.wetmet.net/live/281-05-01/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9Mi8yOC8yMDI1IDk6MDE6MTcgUE0maGFzaF92YWx1ZT1jR0JLZnJYbmFVOEdYbDh1M0wyc1FnPT0mdmFsaWRtaW51dGVzPTMw", label_visibility="collapsed")
125
  confidence = st.slider("Detection Threshold", 0.25, 1.0, 0.4, key="webcam_conf")
126
  refresh_rate = st.slider("Refresh Rate (seconds)", 1, 60, 30, key="webcam_rate")
127
  start = st.button("Begin Monitoring", key="webcam_start")
@@ -148,7 +148,6 @@ with tabs[1]:
148
  status_placeholder.write("Connected to video stream...")
149
  while st.session_state.monitoring:
150
  try:
151
- start_time = time.time()
152
  ret, frame = cap.read()
153
  if not ret:
154
  status_placeholder.error("Video stream interrupted.")
@@ -157,27 +156,20 @@ with tabs[1]:
157
  detected_frame = results[0].plot()[:, :, ::-1]
158
  frame_placeholder.image(detected_frame, use_column_width=True)
159
  status_placeholder.write(f"Objects detected: {len(results[0].boxes)}")
160
-
161
- elapsed = time.time() - start_time
162
- remaining = max(0, refresh_rate - elapsed)
163
- timer_placeholder.write(f"Next scan: {int(remaining)}s")
164
- time.sleep(0.1)
165
  except Exception as e:
166
  status_placeholder.error(f"Video error: {e}")
167
  st.session_state.monitoring = False
168
  break
169
  cap.release()
170
  else:
171
- # Fallback to image-based fetch
172
- status_placeholder.write("Trying as image-based webcam...")
173
  while st.session_state.monitoring:
174
  try:
175
  start_time = time.time()
176
  response = requests.get(webcam_url, timeout=5)
177
- if response.status_code == 403:
178
- status_placeholder.error("HTTP 403: Access denied. Token may have expired.")
179
- break
180
- elif response.status_code != 200:
181
  status_placeholder.error(f"Fetch failed: HTTP {response.status_code}")
182
  break
183
  image_array = np.asarray(bytearray(response.content), dtype=np.uint8)
@@ -191,14 +183,21 @@ with tabs[1]:
191
  frame_placeholder.image(detected_frame, use_column_width=True)
192
  status_placeholder.write(f"Objects detected: {len(results[0].boxes)}")
193
 
 
194
  elapsed = time.time() - start_time
195
  remaining = max(0, refresh_rate - elapsed)
196
- timer_placeholder.write(f"Next scan: {int(remaining)}s")
197
- time.sleep(remaining)
 
 
 
 
198
  except Exception as e:
199
  status_placeholder.error(f"Image fetch error: {e}")
200
  st.session_state.monitoring = False
201
  break
 
 
202
 
203
  # Tab 3: YouTube
204
  with tabs[2]:
 
121
  with col1:
122
  st.markdown("**Webcam Feed**")
123
  st.write("Provide a webcam URL (image or video stream) to monitor for hazards.")
124
+ webcam_url = st.text_input("Webcam URL", "http://<your_webcam_ip>/current.jpg", label_visibility="collapsed")
125
  confidence = st.slider("Detection Threshold", 0.25, 1.0, 0.4, key="webcam_conf")
126
  refresh_rate = st.slider("Refresh Rate (seconds)", 1, 60, 30, key="webcam_rate")
127
  start = st.button("Begin Monitoring", key="webcam_start")
 
148
  status_placeholder.write("Connected to video stream...")
149
  while st.session_state.monitoring:
150
  try:
 
151
  ret, frame = cap.read()
152
  if not ret:
153
  status_placeholder.error("Video stream interrupted.")
 
156
  detected_frame = results[0].plot()[:, :, ::-1]
157
  frame_placeholder.image(detected_frame, use_column_width=True)
158
  status_placeholder.write(f"Objects detected: {len(results[0].boxes)}")
159
+ time.sleep(0.1) # Fast update for video
 
 
 
 
160
  except Exception as e:
161
  status_placeholder.error(f"Video error: {e}")
162
  st.session_state.monitoring = False
163
  break
164
  cap.release()
165
  else:
166
+ # Image-based webcam
167
+ status_placeholder.write("Monitoring image-based webcam...")
168
  while st.session_state.monitoring:
169
  try:
170
  start_time = time.time()
171
  response = requests.get(webcam_url, timeout=5)
172
+ if response.status_code != 200:
 
 
 
173
  status_placeholder.error(f"Fetch failed: HTTP {response.status_code}")
174
  break
175
  image_array = np.asarray(bytearray(response.content), dtype=np.uint8)
 
183
  frame_placeholder.image(detected_frame, use_column_width=True)
184
  status_placeholder.write(f"Objects detected: {len(results[0].boxes)}")
185
 
186
+ # Proper refresh timing for images
187
  elapsed = time.time() - start_time
188
  remaining = max(0, refresh_rate - elapsed)
189
+ for i in range(int(remaining), -1, -1):
190
+ if not st.session_state.monitoring:
191
+ break
192
+ timer_placeholder.write(f"Next scan: {i}s")
193
+ time.sleep(1)
194
+
195
  except Exception as e:
196
  status_placeholder.error(f"Image fetch error: {e}")
197
  st.session_state.monitoring = False
198
  break
199
+ if not st.session_state.monitoring:
200
+ timer_placeholder.write("Monitoring stopped.")
201
 
202
  # Tab 3: YouTube
203
  with tabs[2]: