使用人脸识别需要自行编译 Opencv 第三方模块,地址如下:
https://github.com/opencv/opencv_contrib
OpenCV中自带的HAAR/LBP级联检测器的数据多数都是关于人脸检测的,而在实际项目应用中,我们可能需要从不同的场景中检测某个相同对象,这种需求可以通过OpenCV中HAAR/LBP级联分类器训练工具来生成自己的级联分类器数据,然后通过程序实现自定义对象检测。
人脸检测 CascadeClassifier
- 加载 Opencv 自带的人脸检测
haarcascade_frontalface_alt.xml
分类器。 - 图像预处理
cvtColor(灰度化)
equalizeHist(直方图均衡化)
。 - 使用
detectMultiScale
函数进行识别。 - 使用
rectangle
函数绘制找到的目标矩形框。
简单使用分类器检测人脸
#include "opencv2/objdetect.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
using namespace std;
using namespace cv;
void detectAndDisplay( Mat frame );
CascadeClassifier face_cascade; //生成级联分类器
cv::Size original_size;
int main( int argc, const char** argv )
{
CommandLineParser parser(argc, argv,
"{help h||}"
"{face_cascade|../data/haarcascades/haarcascade_