opencv haar人脸识别

本章内容


        haar 级联分类器,人脸识别
        计算流程:
            1. 创建并加载分类器
            2. 读入图像,并转化成灰度图像
            3. 直方图均衡化
            4. 目标检测
            5. 绘制检测结果

 

 

输出结果:

源码

#include <opencv2/opencv.hpp>
#include <iostream>

 

int main(int argc, char** argv) {
    /*本章内容
        haar 级联分类器,人脸识别
        计算流程:
            1. 创建并加载分类器
            2. 读入图像,并转化成灰度图像
            3. 直方图均衡化
            4. 目标检测
            5. 绘制检测结果
    */
    cv::Mat src = cv::imread("/home/wang/dev/Image/heihei.jpeg");
    cv::Mat src1 = cv::imread("/home/wang/dev/Image/books.jpg", cv::IMREAD_REDUCED_COLOR_8);
    if (src.empty() || src1.empty()) {
        printf("could not load images...\n");
        return -1;
    }
    cv::imshow("box image", src);
    cv::imshow("scene image", src1);

    cv::String haarFile = "/home/wang/dev/opencv-3.4.5/data/haarcascades/haarcascade_frontalface_alt.xml";
    cv::CascadeClassifier face_cascade;
    if(!face_cascade.load(haarFile)){
        std::cout << " 权重导入失败" << std::endl;
        return -1;
    }
    cv::Mat gray;
    cv::cvtColor(src,gray,cv::COLOR_BGR2GRAY);
    cv::Mat grayHist;
    cv::equalizeHist(gray,grayHist);
    /*目标检测
     * api接口:CV_WRAP void detectMultiScale( InputArray image,
                          CV_OUT std::vector<Rect>& objects,
                          double scaleFactor = 1.1,
                          int minNeighbors = 3, int flags = 0,
                          Size minSize = Size(),
                          Size maxSize = Size() );
        参数分析:
            @param scaleFactor Parameter specifying how much the image size is reduced at each image scale.
            @param minNeighbors Parameter specifying how many neighbors each candidate rectangle should have
            to retain it.
            @param flags Parameter with the same meaning for an old cascade as in the function
            cvHaarDetectObjects. It is not used for a new cascade.
            @param minSize Minimum possible object size. Objects smaller than that are ignored.
            @param maxSize Maximum possible object size. Objects larger than that are ignored. If `maxSize == minSize` model is evaluated on single scale
    */
    std::vector<cv::Rect> rects;
    face_cascade.detectMultiScale(grayHist,rects,1.1,1, 0, cv::Size(40, 40)); // , 0, cv::Size(50, 50), cv::Size(200, 200)
    for(int i=0; i< rects.size();i++) cv::rectangle(src,rects[i],cv::Scalar(0,255,0),4);
    cv::imshow("haar 人脸检测", src);

    cv::waitKey(0);
    return 0;
}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值