使用python进行简易的人脸识别
需要用到的库:face_recognition,os,operator
需要安装的库:dlib,cmake,boost 等
import face_recognition
import os
import operator
#第一部分:得到工作目录中的图片名称
picture_path="#图片路径#"#需要识别的图片所在的文件夹路径
all_folds=os.listdir(picture_path)
count=0;
new_list=[]#用于储存图片名称
#将图片名称存在容器中
for file in all_folds:
if operator.contains(file,".jpg")|operator.contains(file,".png"):
count=count+1;
new_list.append(file)
#由于unknown.jpg 需要在最后,所以在循环中先要将其删除
if operator.contains(file,"unknown.jpg"):
new_list.remove(file)
print(new_list)
new_list.append("unknown.jpg")
print("图片已导入")
#告知:未知图片路径需要在最后输入才能保证运算结果的正确性
list=[]
#第二部分:将识别到的图片放入储存器
for i in new_list:
photo_imagine=face_recognition.load_image_file(i)
list.append(photo_imagine)
print("图片数据分析完成")
list2=[]#用于识别人脸分析计算结果,成功识别的放入储存器,如有图片未识别,结束程序
for i in list:
if (len(face_recognition.face_encodings(i)) <= 0):
print("未识别到人脸")
success=False
break
else:
print("人脸已被识别")
success=True
face_exam=face_recognition.face_encodings(i)[0]
list2.append(face_exam)
#第四部分:比较数据得出结果
if success == True:
n=len(list2)
known_faces=list2[0:n-1]
unknown_face_exam=list2[n-1]#未知图片信息存放在最后一处
results2=face_recognition.compare_faces(known_faces,unknown_face_exam)
t=0;
while t<=n-2:
i=int(t+1);
string1="第"+str(i)+"张照片";
string2=("与未知照片中的人物相同吗? {}".format(results2[t]))
print(string1+string2)
t=t+1;