如何训练识别两个人脸的模型呢?
时间: 2023-08-10 16:09:48 浏览: 54
训练一个识别两个人脸的模型,你需要收集两个人的人脸图像,然后对每个人的图像进行标记,并将它们分别存储在不同的文件夹中。
下面是一个简单的示例代码,演示如何使用 LBPH 人脸识别器进行训练:
```python
import cv2
import os
import numpy as np
# 加载训练数据
data_path = 'data'
people = ['person1', 'person2']
faces = []
labels = []
for label, person in enumerate(people):
person_path = os.path.join(data_path, person)
image_paths = [os.path.join(person_path, f) for f in os.listdir(person_path)]
for image_path in image_paths:
# 读取图像并将其转换为灰度图像
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 将图像添加到人脸列表中
faces.append(gray)
# 添加标签
labels.append(label)
# 训练人脸识别器
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.train(faces, np.array(labels))
# 保存训练好的模型
recognizer.save('model.yml')
```
在这个例子中,我们假设有两个人,他们的人脸图像都存储在 `data/person1` 和 `data/person2` 文件夹中。我们使用 `enumerate` 函数为每个人分配一个标签(0 或 1),然后将他们的图像加载到 `faces` 列表中,将标签加载到 `labels` 列表中。最后,我们使用 `cv2.face.LBPHFaceRecognizer_create()` 函数创建一个 LBPH 人脸识别器对象,并使用 `train` 函数训练它。最后,我们使用 `save` 函数将训练好的模型保存到文件中。
注意,在实际应用中,你可能需要使用更多的数据,以及更复杂的算法来训练一个更准确的人脸识别模型。