2018年1月22日,dlib19.9版终于发行了,编译dlib库只需用pip即可一键安装,dlib可以实现完全本地化的人脸识别功能,使用非常方便,配合python的简洁高效和opencv的灵活强大,可以玩票出许多新的花样。本篇就来对其人脸检测(face_detect)功能进行验证。
在网络上,尤其在csdn和github上,关于dlib库的使用介绍已经非常多了,但都是比较古老的版本,也有诸多错误,尤其是编译安装方面,让人诟病极多,我就从未安装成功过,直至19.9版的出现。在19.9版的example中,也有一些误解,希望我的这篇博文可以将自己的摸索共享出来,免除后来者的歧途和不必要的陷坑。
环境
win10,32位
VistualStudio2017集成环境
python3.6
opencv3.4
dlib19.9
都是当前最新的软件和环境,更新都不超过2018年1月。
人脸检测
dlib的人脸检测只需利用一个函数构建一个探测器即可:
detector = dlib.get_frontal_face_detector()
然后加载一张图片,构建一个实例进行检测,其本质就是一个模板分类器。
dets=detector(img,1)
python代码
def face_detect(img):
detector = dlib.get_frontal_face_detector()
dets=detector(img,1)
for i, d in enumerate(dets): #d即为人脸矩形框
draw_rec(img,d) #绘出矩形框
5行代码,就是这么简单。
关于图片
在dlib19.9的官方例程example_python中,强调如果采用opencv作为图像处理工具需要进行图片的格式转化,因为opencv读入的图片是bgr格式,而dlib识别的图片是rgb格式,所以在例程中,你会看到需要不停地进行两者之间格式的转化操作。
实际上,这都古老版本的遗留问题,在新的版本中完全不需要,直接用opencv读入图片,绘图,写字,显示,检测均没有任何问题。
验证
我们先用单张图片来进行验证
用双人照来进行验证:
用密集恐惧症照片来进行验证:
这张照片用上面的参数1没有识别出来一张一人脸,人脸识别的本质是基于模板的分类器,采用窗口滑移来实现的,只是模板是经过深度学习得来的,准确度很高罢了,为了识别出来上面图片中的人脸,我么需要更改滑移窗口的适配大小,我们不妨用参数为‘2’,即dets=detector(img,2),效果如下:
可以看到,47位美女无一缺席,被一网打尽,是不是感觉很棒。
忽然觉得,用这个功能来清点人数也是不错的。
动态验证
领取专属 10元无门槛券
私享最新 技术干货