OpenCV图像特征提取与检测C++(七) 级联分类器 HAAR与LBP– 人脸检测(图像和视频)

本文介绍了OpenCV中的级联分类器用于人脸检测,通过级联多个弱分类器提升检测准确性。内容包括级联检测器原理、AdaBoost算法、HAAR和LBP特征的比较以及使用示例,展示了两者在计算复杂度、训练样本大小、精度和速度上的差异,并提供了代码实现人脸检测于视频中的应用。
摘要由CSDN通过智能技术生成

级联检测器(cascade):通过弱分类器检测到的人脸再次进行多次弱分类器检测,最终得到的人脸检测结果的准确率就非常高了。
使用级联检测器前,需要有训练好的数据。
对象检测,检测的是什么对象由训练的数据决定

API:

void CascadeClassifier::detectMultiScale( // 在不同尺度空间检测 输入图像中不同大小的对象。 检测到的对象作为矩形列表返回
InputArray image, // 待检测的图像,CV_8U类型
CV_OUT std::vector<Rect>& objects, // 保存检测到的对象
double scaleFactor = 1.1, // 不同尺度空间之间的差距
int minNeighbors = 3, // 表示构成检测目标的相邻矩形的最小个数(默认为3个)。如果组成检测目标的小矩形的个数和小于 min_neighbors - 1 都会被排除
int flags = 0, // 忽略
Size minSize = Size(), // 最小尺寸,小于这个尺寸的不检测,默认检测所有小尺寸,minNeighbors 设的很大,这个就设小点,minNeighbors 设的很小,这个就设大点
Size maxSize = Size() // 最大尺寸,大于这个尺寸的不检测,默认检测所有大尺寸
);

代码:(图片)

#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
#include<opencv2/face.hpp>
#include<iostream>
#include<math.h>
#include <string> 
#include<fstream> 

using namespace cv::face;
using namespace cv;
using namespace std;
using namespace cv::xfeatures2d;
int main() {

    CascadeClassifier face_cascade; // 级联分类检测器
    face_cascade.load("D:/opencv/build/etc/haarcascades/haarcascade_frontalface_alt.xml"); // 加载训练的数据


    Mat src, gray;
    src = imread("C:/Users/Administrator/Desktop/pic/HOG1.jpg");
    cvtColor(src, gray, COLOR_BGR2GRAY);
    equalizeHist(gray, gray);//直方图均值化,提升对比度,提升图像特征提取的准确率
    imshow("src", src);
    vector<Rect> faces;//保存检测到的人脸的矩形框
  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值