用python做人脸识别的程序怎么做_手把手教你用Python实现人脸识别
时间: 2023-10-20 20:07:17 浏览: 121
非常好的问题!以下是一个简单的手把手教程,介绍如何使用Python实现人脸识别。
1. 安装必要的库
首先,您需要安装OpenCV和face_recognition库。您可以使用以下命令在终端上安装它们:
```
pip install opencv-python
pip install face_recognition
```
2. 准备样本图像
您需要准备一些人脸图像,以便训练和测试您的模型。您可以从互联网上下载一些图像,或者使用您自己的照片。将这些图像保存在一个文件夹中,文件夹的名称应该是人物的名字。
3. 训练模型
接下来,您需要训练一个模型来识别人脸。您可以使用face_recognition库中的train函数来训练模型。以下是一个简单的代码示例:
```
import os
import face_recognition
# 从文件夹中加载人脸图像并进行训练
def train_faces(directory):
known_faces = []
known_names = []
for filename in os.listdir(directory):
image = face_recognition.load_image_file(directory + "/" + filename)
face_encoding = face_recognition.face_encodings(image)[0]
known_faces.append(face_encoding)
known_names.append(filename.split(".")[0])
return known_faces, known_names
# 训练模型
faces_dir = "./faces"
known_faces, known_names = train_faces(faces_dir)
```
该函数将从指定的文件夹中加载所有人脸图像,并使用face_recognition库的face_encodings函数将每个图像编码为一个128维向量。然后,它将这些向量存储在known_faces列表中,并将每个人物的名称存储在known_names列表中。
4. 进行人脸识别
现在,您已经训练好了模型,可以开始进行人脸识别了。以下是一个简单的代码示例:
```
import cv2
import face_recognition
# 打开摄像头
video_capture = cv2.VideoCapture(0)
# 对每一帧进行处理
while True:
# 获取当前帧
ret, frame = video_capture.read()
# 将当前帧转换为RGB格式
rgb_frame = frame[:, :, ::-1]
# 在当前帧中查找所有人脸位置
face_locations = face_recognition.face_locations(rgb_frame)
# 对每个人脸进行编码
face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)
# 对于每个编码,查找最佳匹配
for face_encoding in face_encodings:
matches = face_recognition.compare_faces(known_faces, face_encoding)
name = "Unknown"
# 如果有一个匹配,则使用匹配的名称
if True in matches:
first_match_index = matches.index(True)
name = known_names[first_match_index]
# 在人脸周围绘制一个矩形和名称
top, right, bottom, left = face_location
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
cv2.putText(frame, name, (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)
# 显示当前帧
cv2.imshow('Video', frame)
# 按'q'键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 关闭摄像头和窗口
video_capture.release()
cv2.destroyAllWindows()
```
该代码将打开计算机上的摄像头,并对每一帧进行处理。它将使用face_recognition库的face_locations函数查找每个帧中的所有人脸位置,然后使用face_encodings函数对每个人脸进行编码。接下来,它将对每个编码进行比较,并使用最佳匹配的名称来标记每个人脸。最后,它将在每个人脸周围绘制一个矩形和名称,并在屏幕上显示当前帧。
这就是用Python实现人脸识别的基本步骤。当然,这只是一个简单的示例,您可以根据自己的需求进行修改和扩展。
阅读全文