- A+
对于类似于人脸的对象,你或许需要不少于 6000个分类器,每一个都需要成功匹配(当然,有容错率),才能检测出人脸。但这有一个问题:对于人脸识别,算法从左上角开始计算一个个数据块,不停问“这是张脸吗”。每个数据块有超过 6000个检测,加起来的计算量会达到数百万级别,计算机很可能会让你等得花儿都谢了。
实现人脸识别
实例1:
1、 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片。其中每个人一张图片,图片以人的名字命名:
known_people 文件夹下有 babe、成龙、容祖儿的照片
2、 接下来,你需要准备另一个文件夹,里面是你要识别的图片:
unknown_pic 文件夹下是要识别的图片,其中韩红是机器不认识的
3、 然后你就可以运行 face_recognition 命令了,把刚刚准备的两个文件夹作为参数传入,命令就会返回需要识别的图片中都出现了谁:
识别成功!
自动识别出人脸特征
实例2(通过多张图片对比,识别出是哪一个人):
[html] view plain copy
-
# filename : recognize_faces_in_pictures.py
-
# -*- conding: utf-8 -*-
-
# 导入face_recogntion模块,可用命令安装 pip install face_recognition
-
import face_recognition
-
#将jpg文件加载到numpy数组中
-
babe_image = face_recognition.load_image_file("/opt/face/known_people/babe.jpeg")
-
Rong_zhu_er_image = face_recognition.load_image_file("/opt/face/known_people/Rong zhu er.jpg")
-
unknown_image = face_recognition.load_image_file("/opt/face/unknown_pic/babe2.jpg")
-
#获取每个图像文件中每个面部的面部编码
-
#由于每个图像中可能有多个面,所以返回一个编码列表。
-
#但是由于我知道每个图像只有一个脸,我只关心每个图像中的第一个编码,所以我取索引0。
-
babe_face_encoding = face_recognition.face_encodings(babe_image)[0]
-
Rong_zhu_er_face_encoding = face_recognition.face_encodings(Rong_zhu_er_image)[0]
-
unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]
-
known_faces = [
-
babe_face_encoding,
-
Rong_zhu_er_face_encoding
-
]
-
#结果是True/false的数组,未知面孔known_faces阵列中的任何人相匹配的结果
-
results = face_recognition.compare_faces(known_faces, unknown_face_encoding)
-
print("这个未知面孔是 Babe 吗? {}".format(results[0]))
-
print("这个未知面孔是 容祖儿 吗? {}".format(results[1]))
-
print("这个未知面孔是 我们从未见过的新面孔吗? {}".format(not True in results))
为true代表是相符的
好了,今天就分享到这里,学习python有什么好的学习方法和技巧欢迎在下面评论区留言和小编交流,有惊喜哦!