人脸识别经过近几年的发展已经非常普遍了,有我们非常熟悉的人脸识别打卡、人脸识别付款等等应用场景。
![8b34145cb33fa6045ae0e09f5a286e40.png](https://i-blog.csdnimg.cn/blog_migrate/c85208f65fc19c6cda654a51ae7d7ec6.jpeg)
今天,夏老师跟大家分享这些应用场景背后的技术——Python调用Dlib实现人脸关键点检测。
这次我们会用到两个工具,分别是opencv和dlib。
opencv帮助我们从摄像头中获取摄像头视频图片;
dlib帮助我们检测图片中的人脸及人脸的关键点。
环境安装
我使用的环境是windows10+ python 3.7.4+opencv 3.4.2.17+dlib 19.19.0
Python 可以直接在官网上下载或者安装anconda,官网上有具体教程这里不再介绍
https://www.python.org
https://www.anaconda.com
opencv可以使用以下命令直接安装
pip install opencv-python
dlib可能会比较麻烦,我的电脑直接使用pip安装会一片红,在网上找了很多资料,然后我先从https://pypi.org/simple/dlib中下载dlib-19.19.0.tar.gz 文件。
然后使用命令
pip install dlib-19.19.0.tar.gz
如果还是按照不了的话可能需要根据错误自行百度。
编写代码
编码的话就很简单首先引入opencv和dlib包
![5fff76c48b73b20e01107c538f3a8ef8.png](https://i-blog.csdnimg.cn/blog_migrate/d54271cf6cd97da7653370afee681fa5.jpeg)
使用opencv打开摄像头
![452947c31e6141edfdb85867045b5778.png](https://i-blog.csdnimg.cn/blog_migrate/49703a776838b4c5f50a81189bb6eb11.jpeg)
使用dlib初始化人脸检测器,其中shape_predictor_68_face_landmarks文件可以从http://dlib.net/files/ 下载,这是官方已经训练好的模型。
![1774f4b60c64b85e2eac85b537398748.png](https://i-blog.csdnimg.cn/blog_migrate/e670e5b9882b608ecd2caf32fc66000a.jpeg)
下面代码主要流程是从摄像头中读取图片检测人脸,检测特征点并显示
![e088d4d67e9549ef3e962d8fff824aa1.png](https://i-blog.csdnimg.cn/blog_migrate/752db8f5859d482dc8cb693201f4a8f8.jpeg)
输入q退出
![70dd1ddc0f2bab874ffe39ce8ded2b9d.png](https://i-blog.csdnimg.cn/blog_migrate/2c32b363fe10efae465b8816439bfff3.jpeg)
清理资源
![0a1a9530edac0834b50a124ed3fc6d21.png](https://i-blog.csdnimg.cn/blog_migrate/545d755ba0a44e6aef13386504f24024.jpeg)
整体代码
![9fc8629ae9978946593987d4fbc2e1e7.png](https://i-blog.csdnimg.cn/blog_migrate/03b4ef6ea8f19f0e8511f9abef970d98.jpeg)
效果展示
![712387e967437e53a3ca4f58d0ee2d04.png](https://i-blog.csdnimg.cn/blog_migrate/d83413713e38fdf98c75c45313ca33a8.jpeg)
总体来说如果使用已经训练好的模型来做人脸检测是非常简单的,唯一的坑就是dlib的安装可能会消耗较多时间,当然这次我们只是做了人脸的检测,后续我们可以实现对人脸进行对比或者实现人脸识别功能。