学习参考素材:
OpenCV人脸检测-Haar级联和LBP
子豪兄opencv-python教程
问题解决:
cv2.CascadeClassifier(’------.xml’)报错
error: (-215:Assertion failed) !empty() in function ‘cv::CascadeClassifier::detectMultiScale’
确定cascade文件路径是否在相应的目录下
解决方案:
改成cv2.CascadeClassifier(cv2.data.haarcascades+’ ')
人脸检测-Haar级联
OpenCV 中的 Haar 级联检测器支持人脸检测、微笑、眼睛与嘴巴检测等,通过加载这些预先训练的 Haar 模型数据可以实现相关的对象检测。
Haar 小波基函数,因为其满足对称性,因此对人脸这种生物对称性良好的对象特别适合用来做检测。 常见的Haar特征分为三类:边缘特征;线性特征;中心特征和对角线特征。
Haar特征值反映了图像的对比度与梯度变化。不同特征可以进行多种组合,生成更加复杂的级联特征
人脸检测-LBP算法
LBP算法的基本原理是,将像素点A的值与其最邻近的8个像素点的值逐一比较,假设中心像素值大于相邻像素值则则相邻像素点赋值为1,否则赋值为0
使用的圆形LBP算子,由于使用圆形来作为窗口,部分领域可能不会取实际像素点而是虚拟像素值(使用双线性插值算法计算灰度值)
比较
优势: OpenCV中使用LBP特征数据检测人脸比使用Haaris数据要快,原因在于LBP特征不会产生小数数据,避免了浮点数计算开销。
LBP的函数调用和HAAR级联一样,只是加载的xml不同
加载LBP算法: detector=cv2.CascadeClassifier(cv2.data.lbpcascade+“lbpcascade_frontalface_improved.xml”)
import cv2
# 导入人脸/人眼级联分类器引擎,'.xml'文件里包含训练出来的人脸特征,cv2.data.haarcascades即为存放所有级联分类器模型文件的目录
face_cascade = cv2