import cv2
# Load the Haar Cascade face detection classifier
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# Load the trained face recognition model
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read('trained_model.xml')
# Set the video capture device (0 is usually the default webcam)
cap = cv2.VideoCapture(0)
while True:
# Read a frame from the video stream
ret, frame = cap.read()
# Convert the frame to grayscale
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Detect faces in the grayscale frame
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5)
# Loop through each face detected
for (x, y, w, h) in faces:
# Crop the face region from the grayscale frame
face_gray = gray[y:y+h, x:x+w]
# Resize the face image to match the training image size
face_gray = cv2.resize(face_gray, (100, 100))
# Predict the label (person) of the face using the trained model
label, confidence = recognizer.predict(face_gray)
# Draw a rectangle around the face and display the predicted label
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.putText(frame, f'Person {label} ({confidence:.2f})', (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
# Display the frame
cv2.imshow('Face Recognition', frame)
# Exit the loop if 'q' is pressed
if cv2.waitKey(1) == ord('q'):
break
# Release the video capture device and close the OpenCV window
cap.release()
cv2.destroyAllWindows()
Note that this code assumes you have already trained a face recognition model and saved it to a file (in this case, trained_model.xml). If you haven't done this yet, you will need to train the model on a dataset of labeled face images before you can use it for recognition.
No comments:
Post a Comment