给我写一个人脸识别的Python程序
时间: 2024-10-15 17:21:27 浏览: 15
基于Opencv的人脸识别Python程序
人脸识别是一个涉及计算机视觉和机器学习领域的复杂任务。在Python中,你可以使用一些库如OpenCV、Dlib和face_recognition等来进行基本的人脸检测和识别。以下是一个简单的示例,展示如何使用OpenCV和face_recognition库:
```python
import cv2
import face_recognition
# 加载人脸数据库(例如存储在本地的图片)
known_faces = []
known_face_names = []
for i in range(5): # 假设你有5个人脸样本
img_path = f"person{i}.jpg"
img = face_recognition.load_image_file(img_path)
encoding = face_recognition.face_encodings(img)[0]
known_faces.append(encoding)
known_face_names.append("Person " + str(i+1))
# 加载待识别的图像
image_to_test = face_recognition.load_image_file("test.jpg")
# 对图像进行人脸检测
face_locations = face_recognition.face_locations(image_to_test)
# 针对每个检测到的脸,获取其编码并进行比对
for (top, right, bottom, left) in face_locations:
face_encoding = face_recognition.face_encodings(image_to_test, [detection])[0]
# 比较已知人脸与测试人脸的相似度
matches = face_recognition.compare_faces(known_faces, face_encoding, tolerance=0.6)
name = "Unknown"
if True in matches:
first_match_index = matches.index(True)
name = known_face_names[first_match_index]
# 在图像上标记人脸区域和姓名
cv2.rectangle(image_to_test, (left, top), (right, bottom), (0, 0, 255), 2)
cv2.putText(image_to_test, name, (left, bottom - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
cv2.imshow("Face Recognition", image_to_test)
cv2.waitKey(0) # 等待用户按键关闭窗口
cv2.destroyAllWindows()
```
这个程序首先加载已知的人脸数据和一张待识别的图片,然后通过人脸检测找到图片中的脸部,并尝试将其与已知的人脸进行比较。如果找到匹配,则显示相应的名字。
阅读全文