当前位置: 首页 > news >正文

QT实现Opencv图像处理

案例

基于QT的人脸识别

pro文件需要加以下代码

INCLUDEPATH += E:/opencv/opencv3.4-qt-intall/install/include
INCLUDEPATH += E:/opencv/opencv3.4-qt-intall/install/include/opencv
INCLUDEPATH += E:/opencv/opencv3.4-qt-intall/install/include/opencv2
LIBS += E:/opencv/opencv3.4-qt-intall/install/x86/mingw/lib/libopencv_*.a

widget.h代码

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
#include<opencv2/face.hpp>
#include <vector>
#include <map>
#include <QMessageBox>
#include <QDebug>
#include <QFile>
#include <QTextStream>
#include <QDateTime>
#include <QTimerEvent>
#include<QtSerialPort/QtSerialPort>
#include<QtSerialPort/QSerialPortInfo>
using namespace  cv;
using namespace cv::face;
using namespace std;QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp代码

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//1、准备相关容器Mat src;           //用于存储图像Mat gray;           //用于存储灰度图Mat dest;          //用于存储均衡化图像VideoCapture video;    //视频流对象,用于存储视频数据CascadeClassifier c;    //定义级联分类器对象vector<Rect> faces;     //用于存储图像的人脸矩形区域//给级联分类器装载模型//函数原型:bool load( const String& filename );//参数:级联分类器模型,此处使用的是人脸分类模型//返回值:成功下载返回值真,否则返回假if(!c.load("E:\\opencv\\resourse\\haarcascade_frontalface_alt2.xml")){QMessageBox::information(this, "提示", "人脸分类模型下载失败");return;}//2、加载视频到对象中来//函数原型:bool open(String  fileNmae);//功能:打开本地磁盘上的某个文件//参数:文件路径//返回值:成功打开返回真,否则返回假//if(!video.open(0))//打开给定路径的视频if(!video.open("E:\\opencv\\resourse\\01.mp4")){QMessageBox::information(this, "提示","视频打开失败");return;}//程序执行至此,表示类 对象中包含了视频while(video.read(src)){//此时src中读取了一张图像//将图像进行翻转//函数原型:void flip(InputArray src, OutputArray dst, int flipCode);//参数1:要翻转的图像//参数2:翻转后的图像容器//参数3:翻转码:0表示按x轴翻转,正值表示按y轴翻转,负值表示两个轴都翻转flip(src, src, 1);/*src.at<cv::Vec3b>(i,j):表示该图像中的任意一个像素点,都是3字节组成for(int i=0; i<src.rows; i++)          //外层循环遍历行{for(int j=0; j<src.cols; j++)        //内层循环遍历列数{//遍历当前像素的每一个颜色值for(int k=0; k<3; k++){src.at<cv::Vec3b>(i,j)[k] = 255 - src.at<cv::Vec3b>(i,j)[k];   //获取该颜色的反差值}}}*///灰度处理//函数原型:void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );//参数1:要处理的原图像//参数2:色彩空间转换后的图像容器//参数3:转换规则:CV_BGR2GRAY表示将BGR图转变成灰度图cv::cvtColor(src, gray, CV_BGR2GRAY);//均衡化处理//函数原型:void equalizeHist( InputArray src, OutputArray dst );//参数1:要被处理的图像//参数2:均衡化处理后的图像容器cv::equalizeHist(gray, dest);//从灰度图中通过级联分类器获取人脸矩形区域c.detectMultiScale(dest, faces);//参数1:要被识别的图像//参数2:存储图像上的人脸矩形区域的容器//遍历矩形框数组,将所有的矩形框都绘制到指定图像上for(uint i=0; i<faces.size(); i++){//该循环中找到任意一个矩形框 faces[i]cv::rectangle(src, faces[i], Scalar(0,0,255), 2);cv::rectangle(gray, faces[i], Scalar(0,0,255), 2);cv::rectangle(dest, faces[i], Scalar(0,0,255), 2);//参数1:要绘制矩形框的图像//参数2:要被绘制的矩形框//参数3:矩形框颜色//参数4:矩形框的粗细}//展示图像imshow("src", src);imshow("gray", gray);imshow("dest", dest);//调用延时函数if(waitKey(30) == 27){//如果用户按下了ESC,可以结束循环break;}}
}Widget::~Widget()
{delete ui;
}

运行效果

知识梳理

相关文章:

QT实现Opencv图像处理

案例 基于QT的人脸识别 pro文件需要加以下代码 INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include/opencv INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include/opencv2 LIBS E:/opencv/o…...

刚转Mac的新手如何卸载不需要的应用程序

最开始转Mac系统的时候很是苦恼&#xff0c;到底该怎么卸载App啊&#xff0c;App直接拖到废纸篓真的能卸载干净吗&#xff0c;卸载App时会不会留下一些文件残留&#xff0c;慢慢的会不会占满内存&#xff0c;于是我找到了一个免费的卸载工具——XApp。 这是一款Mac应用程序卸载…...

Unity 3d 继承MonoBahaviour的单例

在使用Unity3d开发游戏或做客户端项目时&#xff0c;单例是最常见的模式之一&#xff0c;他简单了类的创建&#xff0c;在代码中可以直接调用。下面是两个例子&#xff0c;代码两种不同类型的单例&#xff0c;一个是基本类的单例基类&#xff0c;不是unity MonoBehaviour的类都…...

grafana version 11.1.0 设置Y轴刻度为1

grafana 版本 # /usr/share/grafana/bin/grafana --version grafana version 11.1.0设置轴 Axis 搜索 Standard options 在"Decimals"中输入0&#xff0c;确保只显示整数...

Elasticsearch的安装与配置

注意&#xff1a;elasticsearch 禁止安装在/root路径下&#xff01; 1、创建用户组 groupadd elastic 2、创建用户 useradd es -d /home/es -g elastic echo es | passwd es --stdin 3、给新创建的用户进行授权 chown -R es:elastic /home/es chmod -R 775 /home/es 4…...

win0删除 Windows.old

参考&#xff1a;https://blog.csdn.net/xitongzhijia_abc/article/details/126270452 win10如下所示&#xff1a; 打开 设置–>系统—>存储...

常见IDE及其编译器的讲解

IDE 意思是&#xff1a;集成开发环境 常见的IDE有哪些&#xff1f; eg. devC,VS2022,xcode,codeblocks,clion常见编译器有哪些&#xff1f; eg.msvc,gcc,clang微软的底层编译器是msvc苹果的底层编译器是clang IDE编译器特点devC集成了gcc小巧&#xff0c;工具简单&…...

用SQLyog连接mysql提示2058错误

1)在cmd下(必须是这个,不能是gitbash) // step1:修改下数据库 C:\Users\elex>mysql -uroot -p Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 97 Server version: 8.1.0 MySQL Community Server - GPLCopy…...

Web集群服务-Nginx

1. web服务 1. WEB服务:网站服务,部署并启动了这个服务,你就可以搭建一个网站 2. WEB中间件: 等同于WEB服务 3. 中间件:范围更加广泛,指的负载均衡之后的服务 4. 数据库中间件:数据库缓存,消息对列 2. 极速上手指南 nginx官网: nginx documentation 2.1 配置yum源 vim /etc/…...

获取时隔半个钟的三天

摘要&#xff1a; 今天遇到需求是配送时间&#xff0c;时隔半个钟的排线&#xff01;所以需要拼接时间&#xff01;例如2024-10-08 14&#xff1a;30&#xff0c;2024-10-08 15&#xff1a;00&#xff0c;2024-10-08 15&#xff1a;30 <el-form-item label"配送时间&a…...

构建可以ssh连接的容器镜像

构建可以ssh连接的容器镜像 构建可以通过ssh进行连接容器镜像&#xff0c;实现远程登录容器的目的。 ubuntu ssh容器镜像 你可以使用以下Dockerfile来构建一个可以SSH的容器镜像&#xff1a; FROM ubuntu:20.04MAINTAINER lldhsds# 配置apt国内源 COPY sources.list /etc/a…...

数据库中JOIN的用法?

在数据库中&#xff0c;JOIN 操作用于结合来自两个或多个表的数据&#xff0c;基于它们之间的相关列。JOIN 是关系数据库查询中一个非常重要的功能&#xff0c;允许你从多个表中提取相关的数据。以下是几种常见的 JOIN 类型及其用法&#xff1a; INNER JOIN: 返回两个表中匹配的…...

java项目之纺织品企业财务管理系统源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的纺织品企业财务管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于spring boot…...

C语言 编程练习:解决五个有趣的问题

文章目录 编程练习&#xff1a;解决五个有趣的问题1. 出租车费用计算器1. 1 代码code 2. 成绩转换统计2. 1 代码code 3. 交错序列求和3. 1 代码code 4. 阶乘序列求和4. 1 代码code 5. 输出星号图案5. 1 代码code 编程练习&#xff1a;解决五个有趣的问题 在编程的世界里&#…...

二、安装vmtools

1、 介绍 vmtools 安装后&#xff0c;可以让我们在 windows 下更好的管理 vm 虚拟机。可以设置 windows 和 centos 的共享文件夹 当时当我们发现安装虚拟机工具位置是灰色的 右击打开终端 在终端输入命令 yum list installed | grep open-vm-*yum list installed 命令会列出…...

用echarts画天气预报

如图 上代码 <template><div id"temp15day"></div> </template><script setup> import * as echarts from "echarts"; const initChart () > {const machart echarts.init(document.getElementById("temp15day&q…...

如果要存IP地址,用什么数据类型比较好?(java)

存储IP地址需要考虑到IPv4和IPv6的不同特点&#xff0c;以及系统的需求。我们可以从字符串、整数和二进制三种常用方式来讨论如何高效存储和处理IP地址。 1. IPv4存储 1.1 字符串存储 优点&#xff1a;直观易读&#xff0c;简单易用。缺点&#xff1a;占用更多的存储空间&am…...

LinkedList源码解读

这里写目录标题 简介源码解读基础变量构造函数LinkedList()LinkedList(Collection<? extends E> c) 总结 简介 LinkedList 是对 Java 集合框架中 List 接口的一种具体实现&#xff0c;归属于线性数据结构的范畴。其核心内部结构是通过双向链表&#xff08;double-linke…...

springboot feign-httpclient 连接池配置

在默认情况下 spring cloud feign 在进行各个子服务之间的调用时&#xff0c;http组件使用的是jdk的HttpURLConnection&#xff0c;没有使用线程池。有2种可选的线程池&#xff1a;HttpClient 和 OKHttp 在Spring Boot项目中使用Feign并配置HttpClient连接池&#xff0c;你需要…...

电汽车充电革命:充电桩的过去现在与未来

电动汽车充电革命&#xff1a;中国充电桩行业的过去、现在与未来 一、发展历程概述 中国充电桩行业的发展历程可划分为以下几个阶段&#xff1a; 1. 初始期&#xff08;2006-2008年&#xff09;&#xff1a;在此阶段&#xff0c;国家队主导市场&#xff0c;主要参与者包括国…...

降本增效突围,Captain AI助力Ozon商家提升盈利空间

在Ozon市场竞争日益激烈的当下&#xff0c;“销量高、利润薄”成为很多商家的共同痛点——物流成本高、人力成本高、库存积压、佣金核算复杂等问题&#xff0c;不断压缩商家的盈利空间。对于中小商家而言&#xff0c;降本增效是生存和发展的核心诉求&#xff1b;对于资深大卖而…...

5个实用技巧:用CaptfEncoder快速搞定网络安全编码任务

5个实用技巧&#xff1a;用CaptfEncoder快速搞定网络安全编码任务 【免费下载链接】CaptfEncoder Captfencoder is opensource a rapid cross platform network security tool suite, providing network security related code conversion, classical cryptography, cryptograp…...

别再只跑仿真了!用Vivado 2023.1给你的FPGA图像处理项目做个“硬件体检”

从仿真到硬件的跨越&#xff1a;FPGA图像处理项目实战验证指南 在实验室里看着仿真波形完美无缺&#xff0c;却在开发板上遭遇各种"灵异事件"——这可能是每个FPGA开发者都经历过的成长仪式。仿真环境就像飞行模拟器&#xff0c;能教会你基本操作&#xff0c;但真正的…...

无王无帝定乾坤,来自田间第一人 海棠山铁哥持道定天下

无王无帝定乾坤 ——来自田间第一人千古以来&#xff0c;世人皆认为天下安定、乾坤稳固&#xff0c;必靠帝王集权、朝堂号令、强权治世。 王朝兴替往复&#xff0c;霸业起落无常&#xff0c;靠权柄维系的盛世终难长久&#xff0c;靠杀伐平定的世道终存隐患。 权力会更迭&#x…...

Cortex-R52+中断控制器与定时器深度解析

1. Cortex-R52中断控制器架构解析 在嵌入式实时系统中&#xff0c;中断管理机制直接影响系统的响应速度和确定性。Cortex-R52采用GICv2架构的中断控制器&#xff0c;通过硬件级优先级管理和虚拟化支持&#xff0c;为实时应用提供可靠的中断处理能力。我曾在一个汽车ECU项目中&a…...

通过curl命令快速测试Taotoken提供的各类大模型效果

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过curl命令快速测试Taotoken提供的各类大模型效果 对于开发者&#xff0c;尤其是运维和测试人员来说&#xff0c;在集成或评估一…...

创新设计与智能系统设计融合

在智能制造与工业大模型时代&#xff0c;创新设计&#xff08;以生成式AI、变型衍生、大规模定制为核心&#xff09;与智能系统设计&#xff08;以端-边-云协同、工业智能体、自主控制为核心&#xff09;的融合&#xff0c;是制造企业实现研发与生产双向闭环的终极路径 。两者的…...

`SaveKeyDataAsync` 重构优化版本

✅ SaveKeyDataAsync 重构优化版本 以下是针对 StationRepository 中 SaveKeyDataAsync 方法的完整重构&#xff0c;包含生产级最佳实践。 1. 重构后的 StationRepository.cs&#xff08;重点方法&#xff09; // MaxWell.Repository/StationRepository.cs using Microsoft.Ent…...

5G网络优化实战:手把手教你读懂CSI-RS配置参数与UE测量上报流程

5G网络优化实战&#xff1a;手把手教你读懂CSI-RS配置参数与UE测量上报流程 在5G网络优化工作中&#xff0c;CSI-RS&#xff08;Channel State Information Reference Signal&#xff09;作为关键的下行参考信号&#xff0c;直接影响着网络性能调优的精准度。本文将带您深入理解…...

【NotebookLM内容可信度跃迁关键】:如何用“证据锚定法”让讨论部分通过专家级评审?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM讨论部分的可信度本质与评审标准 可信度的本质&#xff1a;语义对齐与溯源可验证性 NotebookLM 的讨论部分并非传统意义上的“生成式问答”&#xff0c;而是基于用户上传文档构建的语义索引…...