Face Recognition 是一个基于 Python 的人脸识别库,它还提供了一个命令行工具,让你通过命令行对任意文件夹中的图像进行人脸识别操作。
该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。
此篇博文利用face_recognition实现了一个简单的图片识别。
待识别的图片在unknow_people文件夹下:分别为范冰冰、杨颖、刘亦菲、迪丽热巴、邓超。
计算机认识的图片在know_people文件夹下:分别为刘亦菲、迪丽热巴
利用face_recognition将unknow_people文件夹下的图片与know_people文件夹下的图片进行对比,进行图片识别。
import face_recognition
import os
# 获取图片名列表
# 只读取文件名以'.png'或'.jpg'或'.jpeg'结尾的图片
unknow_people_list = [i for i in os.listdir('unknow_people') if (i.endswith('.jpg')) or (i.endswith('.png')) or (i.endswith('.jpeg'))]
know_people_list = [i for i in os.listdir('know_people') if (i.endswith('.jpg')) or (i.endswith('.png')) or (i.endswith('.jpeg'))]
def face_select():
# 定义flag
flag = 0
for unknow_people in unknow_people_list:
# 读取待识别图片
unknow = face_recognition.load_image_file('unknow_people/' + unknow_people)
# 待识别图片转化为特征向量
unknow_encode = face_recognition.face_encodings(unknow)[0]
for know_people in know_people_list:
# 读取计算机已经认识的图片
know = face_recognition.load_image_file('know_people/'+know_people)
# 图片转化为特征向量
know_encode = face_recognition.face_encodings(know)[0]
# 两张图片进行比较
# tolerance刻画了比较的难易程度,值越小越难
res = face_recognition.compare_faces([know_encode],unknow_encode,tolerance=0.5)
if res[0]:
flag = 1
break
else:
flag = 0
if flag == 1:
print(f'匹配{unknow_people.split(".")[0]}')
else:
print(f'未匹配{unknow_people.split(".")[0]}')
if __name__ == '__main__':
face_select()
运行结果如下:
运行结果正如我们所期待,know_people文件夹下只有刘亦菲和迪丽热巴,因此代码只匹配了刘亦菲与迪丽热巴而没有匹配邓超、杨颖、范冰冰。
本人也是计算机视觉的小白,希望能不断向各位大佬学习,不断进步~