Haar-Cascade分类器提高了人脸检测的准确性

 勇_俊 发布于 2022-12-04 02:05

有没有办法优化Haar-Cascade分类器进行人脸检测?

我已经创建了这个功能,它运行良好,但我仍然有一些照片有些问题:

void ImageManager::detectAndDisplay(Mat frame, CascadeClassifier face_cascade){


    string window_name = "Capture - Face detection";
    string filename;

    std::vector faces;
    std::vector eyes;
    Mat frame_gray;
    Mat crop;
    Mat res;
    Mat gray;
    string text;
    stringstream sstm;


    cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
    equalizeHist(frame_gray, frame_gray);

    // Detect faces
    face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));

    // Set Region of Interest
    cv::Rect roi_b;
    cv::Rect roi_c;

    size_t ic = 0; // ic is index of current element


    for (ic = 0; ic < faces.size(); ic++) // Iterate through all current elements (detected faces)  
    {

        roi_c.x = faces[ic].x;
        roi_c.y = faces[ic].y;
        roi_c.width = (faces[ic].width);
        roi_c.height = (faces[ic].height);



        crop = frame_gray(roi_c);

        faces_img.push_back(crop);

        rectangle(frame, Point(roi_c.x, roi_c.y), Point(roi_c.x + roi_c.width, roi_c.y + roi_c.height), Scalar(0,0,255), 2);


    }

    imshow("test", frame);
    waitKey(0);

    cout << faces_img.size();


}

框架:我必须分析的照片.

face_cascade:是从haar_cascade.xml创建的级联分类器

这是我用作算法测试的照片,结果如下:在此输入图像描述

结果非常好,面部都被正确检测到,但正如你所看到的,有三个误报我想删除.

提前致谢

1 个回答
  • 在内部,CascadeClassifier会执行多次检测,并对这些检测进行分组. minNeighbours(在detectMultiScale调用中)是大约相同位置的检测数量,无法计入有效检测,因此从当前的2增加到大约5个左右,直到您开始错过正数.
    2022-12-11 01:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有