python 提取图中头像_python应用之人脸识别及人脸解锁

各位看官大家好,今天

我们继续用python编写一些无用,但却有趣的小程序,

展示一些python的应用场景

之前,我已和大家展示了

Gui图形界面----

python 提取图中头像_python应用之人脸识别及人脸解锁_第1张图片

图像文字识别,

python 提取图中头像_python应用之人脸识别及人脸解锁_第2张图片

语音合成,

python 提取图中头像_python应用之人脸识别及人脸解锁_第3张图片

导入Excel表

python 提取图中头像_python应用之人脸识别及人脸解锁_第4张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第5张图片

统计分析

python 提取图中头像_python应用之人脸识别及人脸解锁_第6张图片

根据数据生成图表,

python 提取图中头像_python应用之人脸识别及人脸解锁_第7张图片

帐号密码登录

python 提取图中头像_python应用之人脸识别及人脸解锁_第8张图片

翻译爬虫等技术

python 提取图中头像_python应用之人脸识别及人脸解锁_第9张图片

这次,我们来挑战的是一个进阶的技术 

人脸识别

python 提取图中头像_python应用之人脸识别及人脸解锁_第10张图片

通常我们认为计算机程序只擅长做一些计算类的工作,现在看来,连不确定的人脸,也一样可以数学模拟

python 提取图中头像_python应用之人脸识别及人脸解锁_第11张图片

本程序界面

人脸识别,还可以细分为

1-1人脸检测,1-2人脸提取,

2人脸比对,

3-1人脸追踪,3-2人脸拍摄,3-3人脸解锁

‍‍我可要露一手了!

5b8dd0ad0114dfe1c5b72c7ba55cbe1b.png

1-1人脸检测

首先,我们新建三个文件夹,把

  • 待检测图片

  • 已知图片

  • 摄像头图片

分别放在这三个文件夹里

python 提取图中头像_python应用之人脸识别及人脸解锁_第12张图片

下面,我们就以科室公众号的这张图片为例

python 提取图中头像_python应用之人脸识别及人脸解锁_第13张图片

先将该文件放在1-pic这个文件夹中

python 提取图中头像_python应用之人脸识别及人脸解锁_第14张图片

点未知列表按钮,该程序会提取并显示该文件夹内的文件名

python 提取图中头像_python应用之人脸识别及人脸解锁_第15张图片

然后我们再把该文件名复制到右侧的人脸检测选框内

python 提取图中头像_python应用之人脸识别及人脸解锁_第16张图片

点人脸标记后,就可以看到科室所有人的头像,都被自动识别,

框起来了

是不是很神奇?

python 提取图中头像_python应用之人脸识别及人脸解锁_第17张图片

其实这个选框是可以根据需要改变框的大小及颜色的

python 提取图中头像_python应用之人脸识别及人脸解锁_第18张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第19张图片

左侧的信息展示区显示每张人脸的具体位置坐标

python 提取图中头像_python应用之人脸识别及人脸解锁_第20张图片

1-2人脸提取

接下来,我们再点一下导出图片,可以看到,所有的头像,被分别提出并保存了出来!

python 提取图中头像_python应用之人脸识别及人脸解锁_第21张图片

1-pic文件夹里,又多了一个放拆分图片的文件夹

连编号都已经编好啦,信息区已经算好了人数

只需轻轻一键,科里的各位亲,已经保存在了文件夹内!

编号都编好啦

python 提取图中头像_python应用之人脸识别及人脸解锁_第22张图片

经过比对,可以发现人脸识别程序,并不识别卡通头像

python 提取图中头像_python应用之人脸识别及人脸解锁_第23张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第24张图片

卡通人脸,我不管!

python 提取图中头像_python应用之人脸识别及人脸解锁_第25张图片

但是正常比例的人脸,识别起来没有问题!

python 提取图中头像_python应用之人脸识别及人脸解锁_第26张图片

不管装得多像人,也不会检测为人!

python 提取图中头像_python应用之人脸识别及人脸解锁_第27张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第28张图片

不管表情多么不靠谱,都能认出来!

python 提取图中头像_python应用之人脸识别及人脸解锁_第29张图片

黑成这样了,也照认不误

python 提取图中头像_python应用之人脸识别及人脸解锁_第30张图片

你就算了!

5b8dd0ad0114dfe1c5b72c7ba55cbe1b.png

2-人脸比对

既然程序能够识别出人脸,接下来,做人脸比对也是顺理成章的了

我们把待鉴定的人脸图片,和已知的人脸进行比对

我们接下来的任务,就是把下面两篇图片中相同的人,识别出来!

python 提取图中头像_python应用之人脸识别及人脸解锁_第31张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第32张图片

之所以选这两张图片,是因为上图人数达到23人,下图的人数达到15人,要想找出同一人,需要一次性做23*12=276次图片识别,

要想在276次比对中,选对一次,这个要求还是比较高的

这个按钮程序还是有点小复杂的,

本程序设定,两个选框可以既选图片,也可以文件夹,

而图片,如果是单人图片则直接鉴别,

python 提取图中头像_python应用之人脸识别及人脸解锁_第33张图片

如果是多人图片,则提示先拆分后再分析

python 提取图中头像_python应用之人脸识别及人脸解锁_第34张图片

可以看出,即使被遮挡了一半脸,仍然可以检测出来 (11-康定.jpg)

为了降低识别误差,我们把识别敏感度调高到+2,

python 提取图中头像_python应用之人脸识别及人脸解锁_第35张图片

为了不沉闷,我们打开DOS窗口看一下执行进度

python 提取图中头像_python应用之人脸识别及人脸解锁_第36张图片

最后,程序成功鉴别出了相同的两个头像!

python 提取图中头像_python应用之人脸识别及人脸解锁_第37张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第38张图片

经过比对,我们可以看出,图像识别模块很有趣,不知道采用的是什么算法

python 提取图中头像_python应用之人脸识别及人脸解锁_第39张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第40张图片

不管是戴着墨镜的刘德华,还是光头华仔,都是华仔

python 提取图中头像_python应用之人脸识别及人脸解锁_第41张图片

眯一只眼,还是郭德纲!

python 提取图中头像_python应用之人脸识别及人脸解锁_第42张图片

侧着脸的发哥,程序仍然能认出是发哥

python 提取图中头像_python应用之人脸识别及人脸解锁_第43张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第44张图片

大笑的马云,还是表情包马云,都是马云,甚至年轻时的马云,也是马云

python 提取图中头像_python应用之人脸识别及人脸解锁_第45张图片

然而,如果你以为模块的识别率太低,那就错了

因为长得像马云而红的小男孩,就不会被认出来

32315f91af830f30adabfaf44a01ea48.png

我认出你不是了

python 提取图中头像_python应用之人脸识别及人脸解锁_第46张图片

以上是找的一个人,那么,多个人脸识别,可不可以呢?

python 提取图中头像_python应用之人脸识别及人脸解锁_第47张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第48张图片

四大天王的照片和男明星库进行比对

python 提取图中头像_python应用之人脸识别及人脸解锁_第49张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第50张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第51张图片

python 提取图中头像_python应用之人脸识别及人脸解锁_第52张图片

可以看出,即使图片模糊不清,也仍然可以识别

5b8dd0ad0114dfe1c5b72c7ba55cbe1b.png

接下来,我们再进一步用摄像头采集一下自已的脸

python 提取图中头像_python应用之人脸识别及人脸解锁_第53张图片

鉴于摄像头的图片比较模糊,我就不放我的脸了,这个按钮只是为了演示,

第二个是采集图像,

图片会保存在第三个文件夹内,把已知图片放在其中,这样,点人脸启动,就可以启动一个程序了

python 提取图中头像_python应用之人脸识别及人脸解锁_第54张图片

5b8dd0ad0114dfe1c5b72c7ba55cbe1b.png

刷脸启动项目

通过刷脸,我们获得了一个启动程序的指令,这个指令, 理论上,可以是任何电脑能做的事,比如

  • 打开一个网页

  • 打开一个文件夹

  • 打开一个软件

  • 打开一个文件

或者,打开任意组合的以上项目

为了做到这一点,我们需要做一个项目文本

我们点创建项目按钮,就会打开一个文本,只要把需要打开的网址,文件夹位置,软件位置,复制到指定位置即可

python 提取图中头像_python应用之人脸识别及人脸解锁_第55张图片

我们创建的项目,可以一次让你打开

4个软件,5个文档文件,4个网页,4个文件夹

5b8dd0ad0114dfe1c5b72c7ba55cbe1b.png

好了,今天的软件程序就介绍到这里,

最后,我要狠狠地吐槽一下人脸识别的模块,

实在是太坑爹了,

期间几次气得想要放弃,问候了无数次你大爷

太受打击了......

简单地复述一下我踩过的这个神坑

  • 要想人脸识别,最方便的调用一个face_recognition

  • 要想安装face_recognition,需要安装dlib库

  • 要安装dlib库,需要先安装cmake模块,boost模块,以及opencv-python模块,每个模块,都要下载特定的python版本,有的要联网安装,有的要下载离线包

  • 要想安装cmake模块,要先安装Vs2017,还要设置环境变量

  • 等把这些模块全安装后,发现还是安装不了,查了一下是python版本冲突,

  • 于是,卸载python37,改装Anaconda3

  • 然后,把之前所有的模块全都装在Anaconda3编译器上,最后发现终于face_recognition可以安装,人脸识别可以在pycharm上运行了,但发现最后没法在pyInstaller上发布exe!

  • 无法怎么调pyInstaller版本,都不能发布,后来只能再次卸载Anaconda3,尝试新版本python38

  • 把所有的模块装在python38上尝试后,没什么用,还是不行,后来想到降低版本,于是又转到python36上

  • 重新把所有的模块都装到python36上,结果发现连原来的小程序也都不能运行了

  • 又折腾了好久,发现居然setuptools的版本过高了,需要降低版本

  • 最后,所有程序都能正常运行了,结果发现pyinstaller还是打包不了,折腾了快一个月,又回到了起点

  • 后来又去查百度,结果发现有可能是自定义库未打包的原因,需要换写spec文件

  • 最后,连同自定义库一起打包后,终于可以打包了,

    真是泪流满面啊

python 提取图中头像_python应用之人脸识别及人脸解锁_第56张图片

如果感兴趣的童鞋,可以关注上海市儿童医院眼科公众号,输入

人脸识别下载

里面有下载链接

注意,由于加了安装库,文件比较大,达到了接近200M

python 提取图中头像_python应用之人脸识别及人脸解锁_第57张图片

关于之前做过的编程小程序,大家可以在菜单栏里看到

python 提取图中头像_python应用之人脸识别及人脸解锁_第58张图片

你可能感兴趣的:(python,提取图中头像)