学习
实践
活动
专区
工具
TVP
写文章

dlib19.9+opencv3.4的人脸检测验证

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位美女无一缺席,被一网打尽,是不是感觉很棒。

忽然觉得,用这个功能来清点人数也是不错的。

动态验证

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180205A1FVBO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券