最近开始学习Opencv以及相关的代码,看了一些网上的解释,总结一下CascadeClassifier()这个函数,方便以后加深印象。
CascadeClassifier,是Opencv中做人脸检测的时候的一个级联分类器。并且既可以使用Haar,也可以使用LBP特征。
Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征。它分为三类:边缘特征、线性特征、中心特征和对角线特征。用黑白两种矩形框组合成特征模板,在特征模板内用 黑色矩形像素和 减去 白色矩形像素和来表示这个模版的特征值。例如:脸部的一些特征能由矩形模块差值特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述在特定方向(水平、垂直、对角)上有明显像素模块梯度变化的图像结构。这样就可以进行区分人脸。
LBP特征原理:http://www.360doc.com/content/18/0202/11/18306241_727150014.shtml
这是我从github上下载的一部分示例代码:
def getfacefromcamera(outdir):
createdir(outdir)
#获取摄像头
camera = cv2.VideoCapture(0)
#要检测cascade文件是否在路径下,最后一般使用绝对路径。
haar = cv2.CascadeClassifier('h