dlib库+opencv+python实现人脸识别
dlib库+opencv+python实现人脸识别
为了防止滥用,本文已经禁止复制!
请预先阅读 Ubuntu与opencv的配置
0.前期准备
0.1 预先工作
你需要安装完毕虚拟机VMware
然后安装Ubuntu
0.2 版本说明
Ubuntu为18.xx版本
VMware为16版本
主机系统Win11
1.安装dlib库
0.下载Dlib
Dlib是一个包含机器学习算法的C++开源工具包。Dlib可以帮助您创建很多复杂的机器学习方面的软件来帮助解决实际问题。目前Dlib已经被广泛的用在行业和学术领域,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。
进入官网:http://dlib.net/ ,点击左下角Download dlib ver.19.16
,下载后解压。
1.查看你的python默认版本号
在终端中输入python
注意:如果你的默认版本号是3.x,建议参考这篇博文修改
如果你的版本号为2.x,这是推荐的版本号
和你预想的可能不一样,版本号不是越高越好
注意在此处你查看的版本仅仅是默认版本,你可能安装了低版本!
2.预先工作
安装预先工具
1 | sudo apt-get install libboost-python-dev |
下载完成后,解压缩
把文件移动到/usr/local/lib/python3.x/dist-packages
目录下
1 | sudo mv dlib-19.19.0 /usr/local/lib/pythonx.x/dist-packages |
上面的x.x需要换成自己的版本
如何查看自己的版本呢?请看下方
请一定点开你的文件看一看你到底是有什么版本**(可能不止一个)**,上面的查看python的版本只是最高版本! 方法如下: 打开你的终端依次输入
1 | sudo cd /usr/local/lib/ |
ls
是显示当前文件夹的意思
你可能会看到如下结果
1 | ...(省略) |
说明的python版本未2.7和3.6
!!推荐你将上面的xx换成2.x的版本,你用3.x也可以
3. Python 编译dlib +opencv
请先切换到/usr/local/lib/pythonx.x/dist-packages/dlib-19.19.0
文件夹下,这是你的dlib根目录。
x.x与第二步的版本号相同
dlib根目录下运行python setup.py install
2.安装opencv-python
在任意文件夹下打开终端输入以下命令
sudo pip install opencv-python
如果提示没有安装pip
请按照其提示的命令安装pip后即可
注意:其中可能出现下载错误,如果提示如numpy未安装,那么请安装后再安装opencv-py;如果有其他报错,可以尝试sudo pip install opencv-python==4.0.0.21
(或者其他它提示的合适的版本号安装)
3.文件设置
首先解压缩老师给你的face_recognition_dlib_master(下称face)到你的home下
然后将老师提供的剩余文件
包括
- dlib_face_recognition_….
- shape_predictor_68…
- allface.zip(需要解压)
放在face目录下。
4.训练三部曲
Ⅰ.你可以打开你的终端
输入python candidate_train.py
首先进行训练
训练的图片就是candidate-face文件夹里面的图片
如果里面没有你的图片,那么opencv是无法识别你的
随后生成结束会形成candidates.txt
这是训练的人的名单,名单中各个人的名字由candidate-face文件夹的文件名确定,你可以把你在candidate-face文件夹里面的大头照重命名为学号-姓名即可(请在输入python candidate_train.py
前设置)
Ⅱ.随后链接摄像头
Ⅲ.然后在终端输入
python this_is_who_camera.py
你就可以看到你的实况识别结果了。
5.关于中文字体和显示截断
但现在可能还有3个问题
①你的名字显示不全,可能只显示了学号的前面4/5个数字
把candidate[num][0:16]
的16改成其他数字
②即使你的学号显示完全,也不能显示中文。
函数cv2AddChineseText可以解决
③你需要把”字体路径(建议用simsun.ttc)”改成自己的路径,并且完成字体的安装,因为Ubuntu默认是不能识别中文字体的
方法如下(安装字体以simsun.ttc)为例:(你需要把liuxiang换成自己的名字)
1 | sudo mkdir /usr/share/fonts/win10 #在Ubuntu 系统目录/usr/share/fonts 下创建一个名为win10的目录,存放我们将要安装的字体文件 |
1 | sudo cp /home/liuxiang/fonts/* /usr/share/fonts/win10 #将/home/liuxiang/fonts/下存放的字体文件复制到/usr/share/fonts/win10目录中 |
1 | cd /usr/share/fonts/win10 #进入创建的字体目录 |
6.完整代码
1 | # -*- coding: UTF-8 -*- |
7.常见问题
- 字体无法识别(报IEOR类似错误):重新安装字体即可
- 无法识别格式,有报错:
text=text.decode('utf-8')
更改为text=text.decode(encoding='utf-8',error="ignore")
- 语法报错:请注意python对于缩进(空格)有极其严格的限制。