在做表情识别的时候,突然在《机器学习——算法原理与编程实践》一书中看到了人脸检测的部分。书中使用的是 OpenCV 自带的 Haar 特征级联表作为训练集,标记人脸的。这种方法我之前也在网上看到过,因为没有成功(现在看来应该是使用了错误的表造成的)所以使用了 face_recognition 的库来进行的。
现在既然成功完成了这种方法,那自然也要用起来。
前期配置
这一次的表情识别的前期工作都是用 Python2.7 做的,因此代码也是基于 Python2.7 的。Python3 的话,应该也是大同小异的。
建议使用 anaconda 配置 Python 虚拟环境,使用起来也很方便。
需要使用的特征级联表,书上使用 haarcascade_frontalface_alt_tree.xml 和 lbpcascade_frontalface.xml,我将使用后者。
上述两个文件分别在链接位置 haarcascades 和 lbpcascades 目录下。
使用方法
关键代码
1 | face_cascade = cv2.CascadeClassifier('./lbpcascade_frontalface.xml') |
完整代码
1 | # -*- coding: utf-8 -*- |
效果图
P.S. 在使用 dlib 做面部特征点标记的时候,发现 dlib 也有 face_detector,有时间我会在下一篇文章中介绍一下。