人脸识别通常涉及到人脸检测和人脸特征提取两个主要步骤。在 Python 中,我们可以使用一些流行的库如 `face_recognition` 来实现人脸识别功能。以下是一个简单的人脸识别的例子代码:
首先,你需要安装 face_recognition
库:
pip install face_recognition
然后,你可以使用以下代码来实现人脸识别:
import face_recognition
# 加载已知的人脸图像并提取特征
image_of_person_1 = face_recognition.load_image_file("known_people/person1.jpg")
image_of_person_2 = face_recognition.load_image_file("known_people/person2.jpg")
# 获取每个图像文件中每个面部的面部编码
# 由于每个图像中可能有多个面孔,所以返回一个编码列表。
# 由于我们假设每个图像只有一个面孔,因此取列表的第一个元素。
person1_face_encoding = face_recognition.face_encodings(image_of_person_1)[]
person2_face_encoding = face_recognition.face_encodings(image_of_person_2)[]
# 创建一个已知人脸的列表
known_face_encodings = [
person1_face_encoding,
person2_face_encoding
]
# 创建一个已知人脸的名称列表
known_face_names = ["Person 1", "Person 2"]
# 加载包含未知人脸的图像
unknown_image = face_recognition.load_image_file("unknown_person.jpg")
# 获取未知图像文件中每个面部的面部编码
unknown_face_encodings = face_recognition.face_encodings(unknown_image)
# 将未知人脸与已知人脸进行比较
for unknown_face_encoding in unknown_face_encodings:
# 比较未知面部编码与所有已知面部编码之间的距离
results = face_recognition.compare_faces(known_face_encodings, unknown_face_encoding)
# 使用标记为 True 的结果来确定未知面部是否与已知面部匹配
face_distances = face_recognition.face_distance(known_face_encodings, unknown_face_encoding)
best_match_index = np.argmin(face_distances)
if results[best_match_index]:
# 如果面部匹配成功,则打印匹配的名称
name = known_face_names[best_match_index]
print(f"Match Found: {name}")
else:
# 如果没有找到匹配的面部,则打印“Unknown”
print("Unknown")
请注意,这个例子假设你已经有了一些已知人脸的图片,并且你想要识别一个新的未知人脸图片。你需要将 "known_people/person1.jpg"
, "known_people/person2.jpg"
和 "unknown_person.jpg"
替换为你自己的图片路径。
face_recognition
库使用 dlib 的深度学习模型来提取面部特征,并且使用欧几里得距离来比较面部特征。这个库非常适合快速实现基本的人脸识别功能,但是对于更高级的应用,可能需要更复杂的方法和模型。