使用LBPH人脸识别器进行人脸识别的代码
时间: 2023-11-02 10:06:45 浏览: 68
以下是使用LBPH人脸识别器进行人脸识别的代码示例:
```python
import cv2
import os
# 加载训练好的人脸识别模型
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read('trained_model.xml')
# 加载人脸分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 获取测试图像路径
test_image_dir = 'test_images'
test_image_paths = [os.path.join(test_image_dir, f) for f in os.listdir(test_image_dir)]
# 循环测试图像
for image_path in test_image_paths:
# 读取测试图像
img = cv2.imread(image_path)
# 将测试图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5)
# 循环每个人脸
for (x, y, w, h) in faces:
# 标识人脸
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 提取人脸区域
face_roi = gray[y:y + h, x:x + w]
# 进行人脸识别
label, confidence = recognizer.predict(face_roi)
# 获取人脸标签对应的名称
if label == 1:
name = 'Alice'
elif label == 2:
name = 'Bob'
else:
name = 'Unknown'
# 在人脸框上显示识别结果
cv2.putText(img, f'{name} ({confidence:.2f})', (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2)
# 显示测试结果
cv2.imshow('Test Image', img)
cv2.waitKey(0)
# 释放窗口
cv2.destroyAllWindows()
```
在上述代码中,我们首先加载了训练好的人脸识别模型,并使用`cv2.CascadeClassifier`加载了人脸分类器。然后,我们循环遍历测试图像,对每个图像进行以下操作:
1. 读取测试图像
2. 将测试图像转换为灰度图像
3. 使用人脸分类器检测人脸
4. 循环每个人脸,标识人脸并提取人脸区域
5. 使用LBPH人脸识别器进行人脸识别,得到人脸标签和置信度
6. 根据人脸标签获取对应的人名
7. 在人脸框上显示识别结果
8. 显示测试结果
识别结果将在窗口中显示出来,按任意键退出程序。
阅读全文