# 获取人脸对应的人名
def get_personName_1(self, image_3d_array):
try:
if len(image_3d_array.shape) == 3:
image_4d_array = np.expand_dims(image_3d_array, 0)
elif len(image_3d_array.shape) == 4:
image_4d_array = image_3d_array
else:
raise ValueError('传入图像数据的维度既不是3维也不是4维')
feature_2d_array = self.face_vectorizer.get_feature_2d_array(image_4d_array)
#if not self.database_2d_array:
# return '找不到'
distance_1d_array = get_distance_1d_array(self.database_2d_array, feature_2d_array, self.distance_method)
isSame_1d_array = np.less(distance_1d_array, self.bestThreshold)
predict_personId_1d_array = self.personId_1d_array[isSame_1d_array]
if len(predict_personId_1d_array) == 0:
personName = 'Unvalid'
else:
min_distance_index = np.argmin(distance_1d_array)
similar_personId = self.personId_1d_array[min_distance_index]
predict_bincount_1d_array = np.bincount(predict_personId_1d_array)
similar_percent = predict_bincount_1d_array[similar_personId] / self.bincount_1d_array[similar_personId]
if similar_percent >= 0.97:
personName = self.personName_list[similar_personId]
else:
personName = 'None'
return personName + similar_percent
except Exception as ex:
print(ex)
return 'Unkown'
如果这个人没在人脸库里, 也会识别成人脸库里的某个人. 我把lfw的数据都加入训练了,识别的速度很快, 但是未加入人脸库的人经常会误识