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系统的时候很是苦恼,到底该怎么卸载App啊,App直接拖到废纸篓真的能卸载干净吗,卸载App时会不会留下一些文件残留,慢慢的会不会占满内存,于是我找到了一个免费的卸载工具——XApp。 这是一款Mac应用程序卸载…...
Unity 3d 继承MonoBahaviour的单例
在使用Unity3d开发游戏或做客户端项目时,单例是最常见的模式之一,他简单了类的创建,在代码中可以直接调用。下面是两个例子,代码两种不同类型的单例,一个是基本类的单例基类,不是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,确保只显示整数...
Elasticsearch的安装与配置
注意:elasticsearch 禁止安装在/root路径下! 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
参考:https://blog.csdn.net/xitongzhijia_abc/article/details/126270452 win10如下所示: 打开 设置–>系统—>存储...
常见IDE及其编译器的讲解
IDE 意思是:集成开发环境 常见的IDE有哪些? eg. devC,VS2022,xcode,codeblocks,clion常见编译器有哪些? eg.msvc,gcc,clang微软的底层编译器是msvc苹果的底层编译器是clang IDE编译器特点devC集成了gcc小巧,工具简单&…...
用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/…...
获取时隔半个钟的三天
摘要: 今天遇到需求是配送时间,时隔半个钟的排线!所以需要拼接时间!例如2024-10-08 14:30,2024-10-08 15:00,2024-10-08 15:30 <el-form-item label"配送时间&a…...
构建可以ssh连接的容器镜像
构建可以ssh连接的容器镜像 构建可以通过ssh进行连接容器镜像,实现远程登录容器的目的。 ubuntu ssh容器镜像 你可以使用以下Dockerfile来构建一个可以SSH的容器镜像: FROM ubuntu:20.04MAINTAINER lldhsds# 配置apt国内源 COPY sources.list /etc/a…...
数据库中JOIN的用法?
在数据库中,JOIN 操作用于结合来自两个或多个表的数据,基于它们之间的相关列。JOIN 是关系数据库查询中一个非常重要的功能,允许你从多个表中提取相关的数据。以下是几种常见的 JOIN 类型及其用法: INNER JOIN: 返回两个表中匹配的…...
java项目之纺织品企业财务管理系统源码(springboot+vue+mysql)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的纺织品企业财务管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于spring boot…...
C语言 编程练习:解决五个有趣的问题
文章目录 编程练习:解决五个有趣的问题1. 出租车费用计算器1. 1 代码code 2. 成绩转换统计2. 1 代码code 3. 交错序列求和3. 1 代码code 4. 阶乘序列求和4. 1 代码code 5. 输出星号图案5. 1 代码code 编程练习:解决五个有趣的问题 在编程的世界里&#…...
二、安装vmtools
1、 介绍 vmtools 安装后,可以让我们在 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的不同特点,以及系统的需求。我们可以从字符串、整数和二进制三种常用方式来讨论如何高效存储和处理IP地址。 1. IPv4存储 1.1 字符串存储 优点:直观易读,简单易用。缺点:占用更多的存储空间&am…...
LinkedList源码解读
这里写目录标题 简介源码解读基础变量构造函数LinkedList()LinkedList(Collection<? extends E> c) 总结 简介 LinkedList 是对 Java 集合框架中 List 接口的一种具体实现,归属于线性数据结构的范畴。其核心内部结构是通过双向链表(double-linke…...
springboot feign-httpclient 连接池配置
在默认情况下 spring cloud feign 在进行各个子服务之间的调用时,http组件使用的是jdk的HttpURLConnection,没有使用线程池。有2种可选的线程池:HttpClient 和 OKHttp 在Spring Boot项目中使用Feign并配置HttpClient连接池,你需要…...
电汽车充电革命:充电桩的过去现在与未来
电动汽车充电革命:中国充电桩行业的过去、现在与未来 一、发展历程概述 中国充电桩行业的发展历程可划分为以下几个阶段: 1. 初始期(2006-2008年):在此阶段,国家队主导市场,主要参与者包括国…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
