用Python写一个人脸录入系统
时间: 2023-11-22 17:51:56 浏览: 35
好的,我可以为您提供一个简单的人脸录入系统的Python代码。需要用到OpenCV库和face_recognition库。
首先,请确保您已经安装了这些库。可以使用以下命令安装:
```
pip install opencv-python
pip install face_recognition
```
然后,您可以按照以下步骤编写代码:
```python
import cv2
import face_recognition
# 初始化摄像头
cap = cv2.VideoCapture(0)
# 定义一个函数来录入人脸
def register_face():
# 读取一帧图像
ret, frame = cap.read()
# 转换为RGB格式
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 检测人脸
face_locations = face_recognition.face_locations(rgb_frame)
# 如果没有人脸,返回空
if len(face_locations) == 0:
return None
# 获取第一个人脸区域
top, right, bottom, left = face_locations[0]
# 提取人脸特征
face_encoding = face_recognition.face_encodings(rgb_frame, [face_locations[0]])[0]
# 显示人脸区域
cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
# 保存人脸特征到文件
with open('face_encodings.txt', 'a') as f:
f.write(','.join(str(e) for e in face_encoding) + '\n')
# 显示图像
cv2.imshow('Register Face', frame)
# 等待按下按键
cv2.waitKey(0)
# 返回人脸特征
return face_encoding
# 循环录入人脸
while True:
# 询问是否需要录入人脸
answer = input("Do you want to register a face? (y/n): ")
# 如果回答为n,退出程序
if answer == 'n':
break
# 否则,录入人脸
face_encoding = register_face()
# 如果成功录入人脸,显示成功信息
if face_encoding is not None:
print("Face registered successfully!")
# 关闭摄像头
cap.release()
# 关闭窗口
cv2.destroyAllWindows()
```
运行这段代码后,程序会启动摄像头,并等待用户输入。如果用户输入'y',程序会进入录入人脸的模式。在此模式下,程序会读取一帧图像,并使用face_recognition库检测人脸。如果检测到人脸,程序会提取人脸特征并将其保存到文件中。如果成功录入人脸,程序会显示成功信息。
注意:这段代码只是一个简单的示例,可能需要根据具体情况进行修改和优化。例如,可以添加一些错误处理代码来处理无法打开摄像头或无法保存特征文件等问题。