dtcms intellij idea安装 kubeflow email serialization outlook playframework vue开发文档 jquery解析json float占几个字节 打印缩放怎么设置 java反射方法 matlab定义空矩阵 hadoop创建文件夹 php获取当天的0点时间戳 mysql 连接 python配置环境 python中index的用法 python抛出异常 java正则表达式 javaswitch语句 java数组添加 javarandom java接口的使用 java多线程编程 tabletpc 音频频谱分析软件 在线pr序列设置 博途v14安装教程 微信小程序源代码 数组求和 视频编辑专家下载 bz2解压 突袭时间表 c语言图书管理系统 全能音频转换通 砸金蛋抽奖活动 谷歌浏览器升级 浏览器安卓 编程下载
当前位置: 首页 > 学习教程  > 编程语言

opencv haar人脸识别

2020/7/24 9:20:49 文章标签:

本章内容


        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;
}

 

 

 


本文链接: http://www.dtmao.cc/news_show_50039.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?