Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -398,10 +398,6 @@ class AttendanceSystem:
|
|
| 398 |
buffer_key = f"{x}_{y}_{w}_{h}"
|
| 399 |
current_time = time.time()
|
| 400 |
|
| 401 |
-
# Create a buffer key for this face location
|
| 402 |
-
buffer_key = f"{x}_{y}_{w}_{h}"
|
| 403 |
-
current_time = time.time()
|
| 404 |
-
|
| 405 |
if self.known_face_embeddings:
|
| 406 |
# Find best match using euclidean distance
|
| 407 |
match_index, match_distance = self._find_best_match(embedding_array)
|
|
@@ -414,15 +410,6 @@ class AttendanceSystem:
|
|
| 414 |
worker_name = self.known_face_names[match_index]
|
| 415 |
color = (0, 255, 0) # Green for recognized
|
| 416 |
|
| 417 |
-
# Use buffer for consistent detections
|
| 418 |
-
if buffer_key not in self.face_recognition_buffer:
|
| 419 |
-
self.face_recognition_buffer[buffer_key] = {'count': 1, 'last_time': current_time, 'worker_id': worker_id}
|
| 420 |
-
else:
|
| 421 |
-
self.face_recognition_buffer[buffer_key]['count'] += 1
|
| 422 |
-
self.face_recognition_buffer[buffer_key]['last_time'] = current_time
|
| 423 |
-
|
| 424 |
-
color = (0, 255, 0) # Green for recognized
|
| 425 |
-
|
| 426 |
# Use buffer for consistent detections
|
| 427 |
if buffer_key not in self.face_recognition_buffer:
|
| 428 |
self.face_recognition_buffer[buffer_key] = {'count': 1, 'last_time': current_time, 'worker_id': worker_id}
|
|
@@ -447,6 +434,7 @@ class AttendanceSystem:
|
|
| 447 |
color = (0, 165, 255) # Orange for potential new worker
|
| 448 |
print(f" -> Attempting auto-registration...")
|
| 449 |
new_worker = self._register_worker_auto(face_image, embedding)
|
|
|
|
| 450 |
worker_id, worker_name = new_worker[0], new_worker[1]
|
| 451 |
color = (0, 255, 0) # Change to green after successful registration
|
| 452 |
if self.mark_attendance(worker_id, worker_name):
|
|
@@ -458,6 +446,7 @@ class AttendanceSystem:
|
|
| 458 |
color = (0, 165, 255) # Orange for new worker
|
| 459 |
print(" -> No known faces in database. Auto-registering...")
|
| 460 |
new_worker = self._register_worker_auto(face_image, embedding)
|
|
|
|
| 461 |
worker_id, worker_name = new_worker[0], new_worker[1]
|
| 462 |
color = (0, 255, 0) # Change to green after successful registration
|
| 463 |
if self.mark_attendance(worker_id, worker_name):
|
|
@@ -650,16 +639,4 @@ def create_interface():
|
|
| 650 |
else:
|
| 651 |
if attendance_system.last_processed_frame is not None:
|
| 652 |
final_frame = cv2.cvtColor(attendance_system.last_processed_frame, cv2.COLOR_BGR2RGB)
|
| 653 |
-
final_log_md = "\n".join(reversed(attendance_system.final_log))
|
| 654 |
-
yield final_frame, final_log_md
|
| 655 |
-
else:
|
| 656 |
-
yield None, "System stopped. Go to 'Controls & Status' to start."
|
| 657 |
-
time.sleep(0.1)
|
| 658 |
-
|
| 659 |
-
demo.load(fn=update_ui_generator, outputs=[video_output, session_log_display])
|
| 660 |
-
return demo
|
| 661 |
-
|
| 662 |
-
if __name__ == "__main__":
|
| 663 |
-
app = create_interface()
|
| 664 |
-
app.queue()
|
| 665 |
-
app.launch(server_name="0.0.0.0", server_port=7860, show_error=True, debug=True)
|
|
|
|
| 398 |
buffer_key = f"{x}_{y}_{w}_{h}"
|
| 399 |
current_time = time.time()
|
| 400 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 401 |
if self.known_face_embeddings:
|
| 402 |
# Find best match using euclidean distance
|
| 403 |
match_index, match_distance = self._find_best_match(embedding_array)
|
|
|
|
| 410 |
worker_name = self.known_face_names[match_index]
|
| 411 |
color = (0, 255, 0) # Green for recognized
|
| 412 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 413 |
# Use buffer for consistent detections
|
| 414 |
if buffer_key not in self.face_recognition_buffer:
|
| 415 |
self.face_recognition_buffer[buffer_key] = {'count': 1, 'last_time': current_time, 'worker_id': worker_id}
|
|
|
|
| 434 |
color = (0, 165, 255) # Orange for potential new worker
|
| 435 |
print(f" -> Attempting auto-registration...")
|
| 436 |
new_worker = self._register_worker_auto(face_image, embedding)
|
| 437 |
+
if new_worker:
|
| 438 |
worker_id, worker_name = new_worker[0], new_worker[1]
|
| 439 |
color = (0, 255, 0) # Change to green after successful registration
|
| 440 |
if self.mark_attendance(worker_id, worker_name):
|
|
|
|
| 446 |
color = (0, 165, 255) # Orange for new worker
|
| 447 |
print(" -> No known faces in database. Auto-registering...")
|
| 448 |
new_worker = self._register_worker_auto(face_image, embedding)
|
| 449 |
+
if new_worker:
|
| 450 |
worker_id, worker_name = new_worker[0], new_worker[1]
|
| 451 |
color = (0, 255, 0) # Change to green after successful registration
|
| 452 |
if self.mark_attendance(worker_id, worker_name):
|
|
|
|
| 639 |
else:
|
| 640 |
if attendance_system.last_processed_frame is not None:
|
| 641 |
final_frame = cv2.cvtColor(attendance_system.last_processed_frame, cv2.COLOR_BGR2RGB)
|
| 642 |
+
final_log_md = "\n".join(reversed(attendance_system.final_log)) o
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|