import cv2 import numpy as np def fill_attendance(update_message, video_path=None): # Load the trained model and Haar Cascade recognizer = cv2.face.LBPHFaceRecognizer_create() recognizer.read("trainer.yml") face_detector = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml") # Initialize video capture if video_path: cap = cv2.VideoCapture(video_path) else: cap = cv2.VideoCapture(0) print("Taking attendance...") while True: ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = face_detector.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5) for (x, y, w, h) in faces: face_image = frame[y:y + h, x:x + w] label, confidence = recognizer.predict(face_image) # Here, we can map label to the student's name using a CSV file or any database print(f"Detected student ID: {label} with confidence: {confidence}") # For simplicity, let's just print the student ID update_message(f"Student {label} marked present") # Draw a rectangle around the face and display the student ID cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.imshow("Attendance", frame) if cv2.waitKey(1) & 0xFF == ord('q'): # Press 'q' to exit break cap.release() cv2.destroyAllWindows()