在face_predict下新建face-seek.py,完成人脸搜索。
查找人脸:查找图像中的人脸并标记出来
import os
import face_recognition
file_name = []
known_faces = []
加载文件中的人脸库图像
image_dir = "Face_database/hyz/"
for parent, dirnames, filenames in os.walk(image_dir):
for filename in filenames:
# print(filename)
# 加载图像
frame = face_recognition.load_image_file(image_dir + filename)
face_bounding_boxes = face_recognition.face_locations(frame)
if len(face_bounding_boxes) != 1:
# 如果训练图像中没有人(或人太多),请跳过图像
print("{} 这张图像不适合训练: {}。".format(image_dir + filename, "因为它上面没找到人脸" if len(face_bounding_boxes) < 1 else "因为它不止一张人脸"))
else:
# encoding
frame_face_encoding = face_recognition.face_encodings(frame)[0]
# 加到列表里
known_faces.append(frame_face_encoding)
file_name.append(filename)
加载未知图像
frame = face_recognition.load_image_file("unknown/unknown1.png")
encoding
frame_face_encoding = face_recognition.face_encodings(frame)[0]
比较获得结果
results = face_recognition.compare_faces(known_faces, frame_face_encoding)
print(results)
首先读取Face_database子目录下的人脸库图像并进行编码,当图像中没有人或者有超过一个人时,就跳过该图像,将编码后的参数以及名字放入列表中,然后读取未知图像,编码后进行比对,如果比对结果返回True,则表示匹配成功,代表该未知图像中的人存在于人脸库中,并输出人脸库中的名字。接下来比对下一个人脸库中的图像,如果全部比对后没有匹配成功,则说明人脸库中没有该未知图像中的人。
5.人脸识别