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);
相关推荐
txwtech2 小时前
第6篇 OpenCV RotatedRect如何判断矩形的角度
人工智能·opencv·计算机视觉
共享家95272 小时前
QT-常用控件(二)
开发语言·qt
江公望5 小时前
Qt QThread使用方法入门浅解
c++·qt
灵性花火7 小时前
记录Qt的多个bug
qt·bug
过往入尘土7 小时前
走进 OpenCV 人脸识别的世界
人工智能·python·深度学习·opencv
奥特曼狂扁小怪兽9 小时前
Qt 自定义无标题栏窗口:FramelessWidget 实现与解析
开发语言·qt
泽虞10 小时前
《Qt应用开发》笔记
linux·开发语言·c++·笔记·qt
掘根12 小时前
【Qt】绘图
开发语言·qt
ajassi200012 小时前
开源 C++ QT QML 开发(十一)通讯--TCP服务器端
c++·qt·开源