读取目标人脸图像,训练目标人脸模型
时间: 2023-12-14 09:02:17 浏览: 24
以下是使用Python和OpenCV库读取目标人脸图像,并训练目标人脸模型的代码。
```
import cv2
import os
# 人脸识别分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# LBPH识别器
recognizer = cv2.face.LBPHFaceRecognizer_create()
# 读取目标人脸图像
faces = []
labels = []
for root, dirs, files in os.walk("faces"):
for file in files:
if file.endswith("jpg") or file.endswith("png"):
path = os.path.join(root, file)
label = int(os.path.basename(root))
img = cv2.imread(path, 0)
faces.append(img)
labels.append(label)
# 训练人脸识别模型
recognizer.train(faces, np.array(labels))
# 保存模型
recognizer.save("trainer.yml")
# 保存标签列表
with open('labels.txt', 'w') as f:
for label, name in zip(labels, names):
f.write('{}:{}\n'.format(label, name))
```
在运行代码之前,需要先将目标人脸图像放在一个名为`faces`的文件夹中,并按照人的不同进行分组。例如,如果要训练名为`Alice`和`Bob`的两个人的人脸模型,则需要在`faces`文件夹中创建两个子文件夹`1`和`2`,分别存放`Alice`和`Bob`的人脸图像。每个子文件夹的名称即为该人的标签ID。
需要注意的是,在训练模型时,建议使用多个不同姿态、不同表情和不同光照条件下的人脸图像进行训练,以提高模型的鲁棒性和准确率。同时,为了避免过拟合,也建议在训练模型时使用不同的人的图像进行训练。