Qt+Opencv:人脸检测

这篇具有很好参考价值的文章主要介绍了Qt+Opencv:人脸检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

话接上一篇,我们仍使用在上篇《Qt+Opencv:Qt中部署opencv》创建的Qt项目来测试opencv提供的sample。

在正式开始本篇之前,我们先说做一下准备工作:

一、opencv官方文档

学习最权威和最可靠的方式,就是阅读官方文档和实践模块samples。同样,opencv的文档个人觉得做的还是可以的,当然,相对于我们熟悉Qt开发的朋友来说,这帮助文档还是“略微逊色”。
上篇,我们选定opencv 3.4.16 版本进行工程实践,所以我们对应去看该版本的文档即可。
doc地址:https://docs.opencv.org/3.4.16/
Qt+Opencv:人脸检测,# opencv,qt,opencv

有朋友会问3.0和4.0的版本有什么大的变化么,答案是我目前也不知道,后面在逐渐精进深入的过程中,版本特性比较,必然也是我们要做的工作之一。所谓知己知彼,百战不殆。手握神剑,当然要尽可能把圣剑之威力发挥的淋漓尽致。不过话说回来,opencv太大面太广,深入研究某一模块到极致就可惊为天人了,不必泛泛求全。但是,保持对知识的贪婪和饥渴,总能促使人不断的学习和进步。话说,作者写这篇的时候已经忘记吃饭。

二、下载源码和samples

地址:https://github.com/opencv/opencv/tree/3.4

Qt+Opencv:人脸检测,# opencv,qt,opencv
data中有我们本章人脸检测的数据模型,需要拷贝到我们Qt自己的项目目录下。譬如作者自己的:
Qt+Opencv:人脸检测,# opencv,qt,opencv

三、项目实践

#include <QApplication>
#include <opencv.hpp>
#include <QDebug>
#include <opencv2/imgproc.hpp>  // Gaussian Blur
#include <opencv2/core.hpp>     // Basic OpenCV structures (cv::Mat, Scalar)
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>  // OpenCV window I/O
#include <opencv2/features2d.hpp>
#include <opencv2/objdetect.hpp>
#include <stdio.h>

using namespace std;
using namespace cv;

const string WindowName = "Face Detection example";

class CascadeDetectorAdapter: public DetectionBasedTracker::IDetector
{
    public:
        CascadeDetectorAdapter(cv::Ptr<cv::CascadeClassifier> detector):
            IDetector(),
            Detector(detector)
        {
            CV_Assert(detector);
        }

        void detect(const cv::Mat &Image, std::vector<cv::Rect> &objects) CV_OVERRIDE
        {
            Detector->detectMultiScale(Image, objects, scaleFactor, minNeighbours, 0, minObjSize, maxObjSize);
        }

        virtual ~CascadeDetectorAdapter() CV_OVERRIDE
        {}

    private:
        CascadeDetectorAdapter();
        cv::Ptr<cv::CascadeClassifier> Detector;
 };

int main(int , char** )
{
    namedWindow(WindowName);

    VideoCapture VideoStream(0);

    if (!VideoStream.isOpened())
    {
        printf("Error: Cannot open video stream from camera\n");
        return 1;
    }

	/// 这里模型文件的路径一定要写对,按照各位的项目配置实际填写
	/// 可以使用绝对路径,也可以使用相对路径
    std::string cascadeFrontalfilename = samples::findFile("data/lbpcascades/lbpcascade_frontalface.xml");
    cv::Ptr<cv::CascadeClassifier> cascade = makePtr<cv::CascadeClassifier>(cascadeFrontalfilename);
    cv::Ptr<DetectionBasedTracker::IDetector> MainDetector = makePtr<CascadeDetectorAdapter>(cascade);
    if ( cascade->empty() )
    {
      printf("Error: Cannot load %s\n", cascadeFrontalfilename.c_str());
      return 2;
    }

    cascade = makePtr<cv::CascadeClassifier>(cascadeFrontalfilename);
    cv::Ptr<DetectionBasedTracker::IDetector> TrackingDetector = makePtr<CascadeDetectorAdapter>(cascade);
    if ( cascade->empty() )
    {
      printf("Error: Cannot load %s\n", cascadeFrontalfilename.c_str());
      return 2;
    }

    DetectionBasedTracker::Parameters params;
    DetectionBasedTracker Detector(MainDetector, TrackingDetector, params);

    if (!Detector.run())
    {
        printf("Error: Detector initialization failed\n");
        return 2;
    }

    Mat ReferenceFrame;
    Mat GrayFrame;
    vector<Rect> Faces;

    do
    {
        VideoStream >> ReferenceFrame;   /// 获取每一帧图像
        cvtColor(ReferenceFrame, GrayFrame, COLOR_BGR2GRAY);
        Detector.process(GrayFrame);
        Detector.getObjects(Faces);  
        
        for (size_t i = 0; i < Faces.size(); i++)
        {
            rectangle(ReferenceFrame, Faces[i], Scalar(0,255,0));  /// 人脸检测并绘制矩形
        }

        imshow(WindowName, ReferenceFrame);
    } while (waitKey(30) < 0);  /// 等待按键触发,退出检测loop

    Detector.stop();

    return 0;
}

四、效果演示(博主自爆了*)

Qt+Opencv:人脸检测,# opencv,qt,opencv
下一张我们深入研究人脸检测(此模型只支持正脸)的实现,以及模型文件杂谈一二~文章来源地址https://www.toymoban.com/news/detail-773835.html

到了这里,关于Qt+Opencv:人脸检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 简易版人脸识别qt opencv

    1、配置文件.pro 2、头文件 3、源文件 main.app widget.cpp 4、ui界面

    2024年02月09日
    浏览(40)
  • QT连接OpenCV库实现人脸识别

    图像容器: Mat类 读取图像:   命名展示图像的窗口: 展示图像: 示例: 视频流类: VideoCapture 打开视频: 若想要打开摄像头只需在构造时,调用构造函数参数传递0即可 读取视频流中图像:  图像翻转: 休眠阻塞函数: 示例: 灰度处理: 均衡化处理: 示例: opencv级联

    2024年02月09日
    浏览(44)
  • Qt-OpenCV学习笔记--人脸识别

    本人从事机械设计12年,业余时间自学编程。 2022年4月6日,开始学习C#, 2022年9月7日,开始学习c++和Qt, 2022年10月28日,开始学习OpenCV, 今天终于搞定了传说中的 人脸识别  ,在此,做个记录。 人脸检测,是基于Haar特征的cascade分类器, 人脸识别,是基于LDA理论的Fisherface算

    2024年02月09日
    浏览(41)
  • OpenCV+ Qt Designer 开发人脸识别考勤系统

    本系统是一个基于OpenCV和 Qt Designer 的人脸识别考勤系统,主要功能是自动识别摄像头中的人脸,并把人脸对应的姓名和打卡时间存储到数据库中,方便管理人员进行考勤管理。本系统使用 face_recognition 库进行人脸识别,使用 PyQt5 开发界面,然后把界面与代码进行整合。 系统

    2024年02月06日
    浏览(51)
  • opencv系列(1)--使用opencv和Qt6做一个视频监控器人脸识别

    这个程序是自己的下班之后,看看那个坏东西想来偷看我的电脑。我就随手做的一个程序。 1.能都显示摄像头的内容。 2.如果有人进入摄像头。 3.利用opencv的模型识别人脸,识别到了就保存到自己的电脑里面。 4.并把他的照片显示到界面上一段时间,告诉他,偷窥有罪。 5.程

    2024年02月11日
    浏览(34)
  • 嵌入式Linux:ARM驱动+QT应用+OpenCV人脸识别项目实现

            这个项目主要分为两部分,客户端(ARM板端)负责利用OpenCV采集人脸数据,利用TCP将人脸数据发送给服务器,然后服务器根据人脸数据进行人脸识别,将识别后的结果返还给客户端,客户端对人脸数据进行解析,得到正确的人脸数据后,打开门锁。门锁涉及硬件操作

    2024年02月10日
    浏览(44)
  • QT+OpenCV实现一个标注工具(图像处理、边缘检测)

    作者是一名QT初学者,为检验学习成果及完成毕业设计,在张老师和学姐的指导下,开发了这个标注工具。CSDN上很多文章对我的学习提供了极大的帮助,分享这篇文章给需要的人一起学习进步~ 废话不多说,先看看效果: Windows10、Qt5.13.2(编译器用的是MinGW64_bit)、OpenCV4.1 环

    2024年02月11日
    浏览(49)
  • Linux毕业设计:基于OpenCV和QT库实现的人脸识别考勤/门禁系统(arm嵌入式ubuntu)

            本文介绍:Linux上以opencv和qt库实现的人脸识别系统,可应用于考勤、门禁等场景,具有人脸录入、删除、人脸检测、识别、用户管理等完整功能。可运行于ARM嵌入式linux、ubuntu即纯软件、ARM+PC组合等多种方式,应用场景多样且易于移植各个平台。 毕业设计题目汇

    2024年02月04日
    浏览(64)
  • VS+QT+Opencv使用YOLOv4对视频流进行目标检测

    对单张图像的检测,请参考:https://blog.csdn.net/qq_45445740/article/details/109659938

    2024年02月12日
    浏览(55)
  • 毕业设计项目——基于QT4+Opencv开发的道路偏移检测与预警系统

    完整项目地址:https://download.csdn.net/download/lijunhcn/88453342 基于QT4+Opencv的道路道路偏移检测与预警系统 开发环境:Ubuntu14.04+QT4.8.5+Opencv2.4.8 已经实现的功能: 道路偏移检测 道路偏移预警 串口读取外部传感器数据 部分源码展示:

    2024年02月03日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包