qt+opencv人脸人眼检测识别

项目运行涉及到opencv库,以及haarcascade_frontalface_default.xml和haarcascade_eye_tree_eyeglasses.xml。qt配置opencv可见先前文章,另外这两份OpenCV 中用于眼睛检测的级联分类器xml文件,是我在网上下载的。

把要使用到的文件都放到当前工程目录下:


相关代码:

cpp 复制代码
#include <opencv2/imgcodecs.hpp>
#include <opencv2/core.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/core/hal/interface.h>
#include <opencv2/features2d/hal/interface.h>
#include <opencv2/imgproc/hal/interface.h>
#include <opencv2/objdetect.hpp>

 	QString imgPath = "D:\\Qt\\File\\open_test\\zyh.jpg";
    cv::Mat imgMat = cv::imread(imgPath.toStdString());

    //脸部识别
    cv::CascadeClassifier faceCascade;
    faceCascade.load("D:\\Qt\\File\\open_test\\opencv\\haarcascades\\haarcascade_frontalface_default.xml");
    if(faceCascade.empty())
        std::cout<< "face XML file not loaded"<<std::endl;

    std::vector<cv::Rect> faces;
    faceCascade.detectMultiScale(imgMat, faces, 1.1, 10);
    for(int i=0; i<faces.size(); i++){
        cv::rectangle(imgMat, faces[i].tl(), faces[i].br(), cv::Scalar(255,0,255),3);
    }


    //眼部识别
    cv::CascadeClassifier eyeCascade;
    eyeCascade.load("D:\\Qt\\File\\open_test\\opencv\\haarcascades\\haarcascade_eye_tree_eyeglasses.xml");
    if(eyeCascade.empty())
        std::cout<< "eye XML file not loaded"<<std::endl;

    std::vector<cv::Rect> eyes;
    eyeCascade.detectMultiScale(imgMat, eyes, 1.1, 10);
    for(int i=0; i<eyes.size(); i++){
        cv::rectangle(imgMat, eyes[i].tl(), eyes[i].br(), cv::Scalar(255,0,0),1);
    }


    cv::imshow("Image", imgMat);
相关推荐
luoyayun36143 分钟前
Qt/C++ 线程池TaskPool与 Worker 框架实践
c++·qt·线程池·taskpool
共享家95271 小时前
QT-界面优化(下)
开发语言·数据库·qt
2739920291 小时前
生成二维码 QRCode (QT)
开发语言·qt
火山灿火山2 小时前
初识Qt(使用不同中方式创建helloworld)
开发语言·qt
深蓝海拓3 小时前
OpenCV学习笔记之:调整ORB算法的参数以适应不同的图像
笔记·opencv·学习
永不停转4 小时前
关于 QGraphicsItemGroup 内部项目发生变化后group重新定位的问题
c++·qt
带土14 小时前
5. QT之Q_OBJECT详解
开发语言·qt
Mrliu__6 小时前
Opencv(十六) : 图像边缘检测
人工智能·opencv·计算机视觉
leon_zeng015 小时前
Qt Modern OpenGL 入门:从零开始绘制彩色图形
开发语言·qt·opengl
会飞的胖达喵15 小时前
Qt CMake 项目构建配置详解
开发语言·qt