Qt-OpenCV学习笔记--人脸检测--基于Haar特征的cascade分类器

概述

基于Haar特征的cascade分类器(classifiers) 是Paul Viola和 Michael Jone在2001年,论文”Rapid Object Detection using a Boosted Cascade of Simple Features”中提出的一种有效的物品检测(object detect)方法。它是一种机器学习方法,通过许多正负样例中训练得到cascade方程,然后将其应用于其他图片。

Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值。

OpenCV自带一些已经训练好的分类器,比如人脸、眼睛、微笑等。这些文件储存在如下路径中:

opencv/data/haarcascades/

如果想要自己训练分类器,来识别任意物品,可以参照:

Cascade Classifier Training

函数

void cv::CascadeClassifier::detectMultiScale
(
	InputArray 	image,
    std::vector< Rect > & 	objects,
    double 	scaleFactor = 1.1,
    int 	minNeighbors = 3,
    int 	flags = 0,
    Size 	minSize = Size(),
    Size 	maxSize = Size() 
)
image输入图像(CV_8U)
objects输出结果(包含人脸位置的矩形集合)
scaleFactor每次图像缩小的比例(默认1.1)
minNeighbors成功匹配所需要的矩形框的数量(默认为3)
flags

默认为0

 ● CASCADE_DO_CANNY_PRUNING=1

    利用canny边缘检测来排除一些边缘很少或者很多的图像区域
 ● CASCADE_SCALE_IMAGE=2    正常比例检测
 ● CASCADE_FIND_BIGGEST_OBJECT=4    只检测最大的物体
 ● CASCADE_DO_ROUGH_SEARCH=8    初略的检测

minSize最小对象尺寸(小于该值的对象将被忽略)
maxSize最大对象尺寸(大于该值的对象将被忽略)

测试代码

#include "widget.h"
#include "ui_widget.h"

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //创建级联分类器
    CascadeClassifier cascade;
    //载入Haar特征分类器
    cascade.load("C:/opencv/date/haarcascade_frontalface_alt2.xml");

    //创建矩阵
    Mat src,
        dst_gray;
    //载入图像
    src = imread("c:/opencv/zhou.jpg");
    //生成灰度图
    cvtColor(src, dst_gray, COLOR_BGR2GRAY);

    //创建矩形容器
    vector<Rect> rects;
    //识别人脸
    cascade.detectMultiScale(dst_gray,rects,1.1,3,0);

    //绘制矩形框
    Scalar color(0,255,0);

    for(uint i=0;i<rects.size();i++)
    {
        rectangle(src,rects[i],color,2,8);
    }
    //显示
    imshow("src",src);

}

Widget::~Widget()
{
    delete ui;
}

测试结果

参考:

opencv人脸检测_Haar特征分类器实现人脸检测_cascade.detectMultiScale参数详解

使用Haar Cascade 进行人脸识别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值