不久乘高铁出行,看见高铁火车站已经实现了“刷脸进站”,而且效率很高,很感兴趣,今天抽时间研究一下,其实没那么复杂。
我基本上是基于https://github.com/ageitgey/face_recognition上的资料和源码做一些尝试和试验。
首先,需要配置我们的python环境,我悬着的python27(比较稳定),具体过程不多说了。
然后,需要安装这次的主角face_recognition库,这个的安装花了我不少时间,需要注意一下几点(按照本人的环境):
1,首先,安装visual studio 2015,因为vs2015默认只安装c#相关组件,所以需要安装c++相关组件。
ps:vs2015安装c++相关组件的方法:在vs2015中新建c++项目,出现下面场景
选择第二项,确定后就会自动安装。
为什么需要安装c++,因为安装face_recognition时会先安装dlib,dlib是基于c++的一个库。
2,安装cmake(一个跨平台编译工具),然后需要将cmake的安装路径加入到系统环境变量path中去。
最后,就可以直接在dos中执行安装命令了(需要切换到python目录下的Script目录下):pip install face_recognition,命令会自动帮你安装好需要的dlib库。
到此为止,我们完成了face_recognition安装工作。
---------------------------------------------------------------分割线----------------------------------------------------------------------------------
下面给出几个实例来逐步了解“人脸识别”:
1.一行代码实现“人脸识别”
在Python目录中新建两个文件夹:分别表示“已知姓名的人”和“未知姓名的人”,图片以额、人名命名,如下:
接下来,我们通过“认识的人”来识别“不认识的人”:
结果表明:1.jpg不认识,3.jpg是obama,unkown.jpg中有两个人,一个是obama,另一个不认识
结果还挺准确的!很给力!!
2.识别图片中所有的人脸,并显示出来
import Image import face_recognition image = face_recognition.load_image_file('F:/Python27/Scripts/all.jpg') face_locations = face_recognition.face_locations(image) #face_locations =face_recognition. #face_locations(image,number_of_times_to_upsample=0,model='cnn') print('i found {} face(s) in this photograph.'.format(len(face_locations))) for face_location in face_locations: top,right,bottom,left = face_location print('A face is located at pixel location Top:{},Left:{},Bottom:{},Right:{}'.format(top,right,bottom,left)) face_image = image[top:bottom,left:right] pil_image=Image.fromarray(face_image) pil_image.show()