2.face_recognition.load_image_file(file,mode ='RGB')
参数:
file –图像文件名或要加载的文件对象
mode –将图像转换成的格式。仅支持“ RGB”(8位RGB,3通道)和“ L”(黑白)。
返回值:
图像内容为numpy数组
cnn人脸检测器返回图像中人脸边界框的2d数组。如果您使用的是GPU,由于GPU可以一次处理一批图像,因此可以更快地获得结果。如果您不使用GPU,则不需要此功能。
face_recognition.batch_face_locations(images,number_of_times_to_upsample = 1,batch_size = 128 )
参数:
img –图片列表(每个图片为一个numpy数组)
number_of_times_to_upsample –对图像进行脸部上采样的次数。数字越大,面孔越小。
batch_size –每个GPU处理批次中要包含多少个图像。
返回值:
以css(上,右,下,左)顺序找到的脸部位置的元组列表
face_recognition.compare_faces(known_face_encodings,face_encoding_to_check,tolerance = 0.6 )
参数:
known_face_encodings –已知面部编码列表
face_encoding_to_check –与列表进行比较的单一面部编码
tolerance –认为相匹配的两张脸之间的距离。越低越严格。0.6是典型的最佳性能。
返回值:
真/假值列表,指示哪些known_face_encodings与面部编码匹配以进行检查
给定面部编码列表,将其与已知的面部编码进行比较,并获得每个比较面部的欧式距离。距离告诉您面孔的相似程度。
face_recognition.face_distance(face_encodings,face_to_compare )
参数:
face_encodings –要比较的人脸编码列表
face_to_compare –要比较的人脸编码
返回值:
一个numpy ndarray,每个面的距离与“ faces”数组的顺序相同
face_recognition.face_encodings(face_image,known_face_locations = None,num_jitters = 1 )
参数:
face_image –包含一个或多个面部的图像
known_face_locations –可选-每个面的边界框(如果您已经知道的话)。
num_jitters –计算编码时对面部重新采样的次数。越高越准确,但越慢(即100慢100倍)
返回值:
128维面部编码列表(图像中的每个面部一个)
face_recognition.face_landmarks(face_image,face_locations = None,model ='large' )
参数:
face_image –要搜索的图像
face_locations –(可选)提供要检查的面部位置列表。
model –可选-使用哪种模型。“large”(默认)或“small”仅返回5点,但速度更快。
返回值:
面部特征位置(眼睛,鼻子等)的字典列表
face_recognition.face_locations(img,number_of_times_to_upsample = 1,model ='hog' )
参数:
img –图片(以numpy数组形式)
number_of_times_to_upsample –对图像进行脸部上采样的次数。数字越大,面孔越小。
model –要使用的人脸检测模型。“ hog”精度较低,但在CPU上更快。“ cnn”是经过GPU / CUDA加速(如果可用)的更准确的深度学习模型。默认值为“hog”。
返回值:
以css(上,右,下,左)顺序找到的脸部位置的元组列表
import face_recognition
lxt_image = face_recognition.load_image_file("candidate-faces/lxt.jpg")
zxc_image = face_recognition.load_image_file("candidate-faces/cl.jpg")
# 从已知图像中获取脸部编码特征
lxt_face_encoding = face_recognition.face_encodings(lxt_image)[0]
zxc_face_encoding = face_recognition.face_encodings(zxc_image)[0]
# 人脸特征库
known_encodings = [lxt_face_encoding, zxc_face_encoding]
# 标签库
face_lib_label=["lxt","cl"]
# 装载图片并获取其编码特征
image_to_test = face_recognition.load_image_file("candidate-faces/lxt.jpg")
image_to_test_encoding = face_recognition.face_encodings(image_to_test)[0]
# See how far apart the test image is from the known faces
face_distances = face_recognition.face_distance(known_encodings, image_to_test_encoding)
result=None
cd=None
for i, face_distance in enumerate(face_distances):
print(face_distance)
if face_distance < 0.1:
result=i
cd="A"
break
if face_distance <= 0.2 and face_distance >= 0.1:
result = i
cd = "B"
break
if face_distance > 0.2:
continue
if cd=="A":
print(face_lib_label[i]," 精确匹配!")
if cd=="B":
print(face_lib_label[i]," 普通匹配!")
if result is None:
print("人脸库中不存在!")