(源代码下载:http://download.csdn.net/detail/csdfhj2011/7356491)
上一篇文章中已经用haarclassifiercascade级联分类器将人脸检测出来,那如何从这些人脸中识别出来谁是谁呢?
opencv较新版本中(我使用的是2.4.8)提供了一个FaceRecognizer类,里面有相关的一些人脸识别的算法及函数接口,其中包括三种人脸识别算法:
1.eigenface
2.fisherface
3.LBPHFaceRecognizer
本文实验室用的是第三种。LBP是一种特征提取方式,能提取出图像的局部的纹理特征,最开始的LBP算子是在3X3窗口中,取中心像素的像素值为阀值,与其周围八个像素点的像素值比较,若像素点的像素值大于阀值,则此像素点被标记为1,否则标记为0。这样就能得到一个八位二进制的码,转换为十进制即LBP码,于是得到了这个窗口的LBP值,用这个值来反映这个窗口内的纹理信息。
LBPH是在原始LBP上的一个改进,在opencv支持下我们可以直接调用函数直接创建一个LBPH人脸识别的模型(eigenface和fisherface类似):