前言
简单的人脸检测程序可以直接基于opencv的函数库进行实现,本文介绍一下detectMultiScale函数。
函数简介
opencv2人脸检测使用的是detectMultiScale函数,可以检测出图片中的所有人脸,并将vector类型保存各个人脸的位置和大小,用矩形Rect类表示,该函数由分类器的对象进行调用。
Haar特征分类器
Haar特征分类器就是一个XML文件,是opencv官方训练好的检测器,可以直接调用,存放在opencv的安装目录下。
.opencvsourcesdatahaarcascades
函数详解
不同版本的调用函数可能会有些微差别,可以查看函数的声明等。detectmultiscale函数可以得到每个人脸的得分。具体的声明如下。
CV_WRAP virtual void detectMultiScale( const Mat& image, CV_OUT vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size() ); CV_WRAP virtual void detectMultiScale( const Mat& image, CV_OUT vector<Rect>& objects, vector<int>& rejectLevels, vector<double>& levelWeights, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size(), bool outputRejectLevels=false );
rejectLevels:
levelWeights:
还有一个版本
void cv::CascadeClassifier::detectMultiScale( InputArray image, std::vector< Rect > & objects, std::vector< int > & numDetections, double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size() );
参考
1.opencv官网;
2.opencv例程;
完