QT5 MSVC2017 64bit配置OpenCV4.5无需编译与示范程序

环境:Windows 10 64位
Opencv版本:4.5
QT:5.14
QT5 MSVC2017配置OpenCV
版本参考:
opencv msvc c++对应版本
1.安装MSVC2017(vs2017)
打开Visual Studio Installer,点击修改

选择vs2017生成工具:

2.下载OpenCV4.5并解压
opencv4.5版本
3.解压opencv-4.5.4-vc14_vc15.exe

vc15 = Visual Studio 2017
OpenCV4.5 支持 VS2017,VS2019(x64)
OpenCV4.6 支持 VS2017,VS2019(x64)
3.QT安装与配置:
Qt 下载
国内镜像网站
这里给大家推荐几个国内著名的 Qt 镜像网站,主要是各个高校的:
中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/
清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/
北京理工大学:http://mirror.bit.edu.cn/qtproject/
中国互联网络信息中心:https://mirrors.cnnic.cn/qt/
Qt6 官网QtCreator 下载与安装方法win10_qt6下载-CSDN博客
4.环境变量配置
一、配置QT安装的路径
二、配置Opencv的解压的位置

5.打开QT Creator新建项目


选择qmake


选择MSVC2017 64bit

点击完成
5.双击打开pro文件

编辑区域右键选择添加库


添加库文件路径后:

pro文件已添加路径:

示范代码:
这个函数是显示原图,值得注意的是,在转化8位3通道的图像时,OpenCV和QImage使用的红蓝通道是相反的,需要使用rgbSwapped方法互换一下void MainWindow::on_pushButton_read_clicked()
{std::string str3 = file_read(i);cv::Mat srcimage = cv::imread(str3);/* -------------------------------------------------------- */// cv::Mat srcimage=cv::imread("../MainWindow/2.jpg");//cv::imshow("原始图片",src);R//Mat转QImage 像素 oldlabel放置原图QImage disimage = QImage(srcimage.data,srcimage.cols,srcimage.rows,srcimage.cols*srcimage.channels(),QImage::Format_RGB888);QImage imag =disimage.rgbSwapped();//将红蓝通道对换// disimage = imag.scaled(ui->label->width(),ui->label->height(),Qt::KeepAspectRatioByExpanding);disimage = imag.scaled(ui->label->width(),ui->label->height(),Qt::KeepAspectRatio);ui->label->setPixmap(QPixmap::fromImage(disimage));
}
/** ---------------------------
opencv_t1.exe - 系统错误
---------------------------
由于找不到 opencv_world454d.dll,无法继续执行代码。重新安装程序可能会解决此问题。
---------------------------
确定
---------------------------
https://www.cnblogs.com/txwtech/p/17844109.html ,解决方法** */std::string MainWindow::file_read(int &i)
{/* 可以读取绝对路径下的第一张图片 *///获取应用程序可执行文件的文件路径://QDir::currentPath();//获取当前工程目录QDir dir(path);QStringList filename ;filename << "*.png" << "*.jpg";//可叠加,可使用通配符筛选QStringList results;results = dir.entryList(filename,QDir::Files | QDir::Readable,QDir::Name);//增加一个判定int a=results.size();//qDebug()<<a;打印出来有几张图片qDebug()<<"i"<<i;if(i+1>a){QWidget *parent=new QWidget;// QMessageBox::information(parent,tr("aa"),tr("aa"),tr("aa"),tr("aa"));// QMessageBox::information(this,tr("提示"),tr("最后一张,将返回第一张"),tr("确定"),tr("取消"));QMessageBox::information(parent,tr("提示"),tr(" 最后一将返回第一张 "),tr("确定"),tr("取消"));// QMessageBox::information(parent,tr("aa"),tr(" 最后一将返回第一张 "));qDebug()<<i;i--;//回到上一张i=0;}//qDebug()<<results;//results里就是获取的所有文件名了,这里的qdebug是将运行的路径进行输出QString st=results.at(i);QString rt=path;qDebug()<<rt+st;std::string str1=rt.toStdString();std::string str2 = st.toStdString();std::string str3=str1+str2;return str3;
}void MainWindow::on_pushButton_next_pic_clicked()
{i++;file_read(i);on_pushButton_read_clicked();on_pushButton_to_gray_clicked();
}void MainWindow::on_pushButton_previous_pic_clicked()
{i--;if(i<=0){i=0;}file_read(i);on_pushButton_read_clicked();on_pushButton_to_gray_clicked();
}
增加一个警告框用来提示是否存在文件夹,如果没有就创建void MainWindow::on_pushButton_create_folder_clicked()
{QDir *temp = new QDir;bool exist = temp->exists(path);if(exist){// QMessageBox::warning(this,"创建文件夹","文件夹已经存在!");//会显示中文乱码QMessageBox::information(this,tr("提示"),tr("创建成功"),tr("确定"),tr("取消"));}else{bool ok = temp->mkdir(path);if(ok){;// QMessageBox::information(this,u8"提示",u8"创建失败!",u8"确定",u8"取消");}// QMessageBox::warning(this,"创建文件夹","文件夹创建成功!");}
}void MainWindow::on_pushButton_to_gray_clicked()
{std::string str3=file_read(i);cv::Mat srcimage=cv::imread(str3);//cv::imshow("原始图片",src);cv::Mat img_resize,img_Gray,img_blur;//cv::resize(srcimage, img_resize,cv::Size(), 0.5, 0.5);cvtColor(srcimage, img_Gray, cv::COLOR_BGR2GRAY);GaussianBlur(img_Gray, img_blur, cv::Size(3, 3), -1, -1);//高斯模糊化//Mat转QImage 像素 oldlabel放置原图// QImage disimage = QImage(img_blur.data,img_blur.cols,img_blur.rows,img_blur.cols*img_blur.channels(),QImage::Format_Grayscale8);//Mat转QImage 像素 oldlabel放置灰度图QImage disimage = QImage(img_blur.data,img_blur.cols,img_blur.rows,img_blur.cols*img_blur.channels(),QImage::Format_Grayscale8);ui->label_2->setPixmap(QPixmap::fromImage(disimage.scaled(ui->label_2->width(),ui->label_2->height(),Qt::KeepAspectRatio)));//,Qt::KeepAspectRatio在后面加上这个就可以保证图片不变形
}

工程源代码:
待更新。。。
相关文章:
QT5 MSVC2017 64bit配置OpenCV4.5无需编译与示范程序
环境:Windows 10 64位 Opencv版本:4.5 QT:5.14 QT5 MSVC2017配置OpenCV 版本参考: opencv msvc c对应版本 1.安装MSVC2017(vs2017) 打开Visual Studio Installer,点击修改 选择vs2017生成工…...
windows如何查看自己的ip地址
windows如何查看自己的ip地址 1.打开控制面板 2.进入网络和internet 3.进入网络共享中心 4.点击以太网进入网络详情页,或邮件已连接的网络,点击属性 5.查看ipv4地址就是当前机器ip...
Camera2的使用【详细】
目录 1.获取权限 2. 获取指定相机ID (1)获取相机管理者CameraManager (2)获取相机ID列表 (3)获取相机特征CameraCharacteristics (4)获取相机朝向 3.获取相机输出尺寸 (1)根据相机ID获取相机特征 (2)获取输出流配置StreamConfigurationMap (3)获取输出尺寸数组(参数为…...
Playcanvas后处理-辉光bloom
(一)Bloom介绍 Bloom(辉光、光晕、泛光)是一种常见的摄像机后处理(PostProcessing)效果,用于再现真实世界相机的成像伪影。这种效果会产生从图像中明亮区域边界延伸的光条纹(或羽毛…...
GCC 学习
GCC Resource Center for GCC Internalshttps://www.cse.iitb.ac.in/grc/这是个不错资料网站,有兴趣的可以了解下...
2023数维杯数学建模C题完整版本
已经完成全部版本,获取请查看文末下方名片 摘要 随着人工智能在多个领域的快速发展,其在文本生成上的应用引起了广泛关注。本研究聚焦于辨识人工智能(AI)生成文本的基本规则,并探究AI文本的检测及其与人类文本的区分…...
快速解密PPT幻灯片密码,让PPT重见天日
最简单的办法解密、找回和去除PPT幻灯片密码,具体步骤如下:1.百度搜索【密码帝官网】,2.点击“立即开始”在用户中心上传要解密的文件稍等片刻,就能找回密码。不用下载软件,手机电脑都可用。而且还支持Word、Excel、PD…...
十六、RabbitMQ快速入门
目录 一、在centos上下载MQ镜像 二、安装运行容器 三、登录进入MQ 1、添加一个新的用户 2、新建虚拟机 3、 为用户分配权限 四、RabbitMQ的基本概念 RabbitMQ中的几个概念: 五、常见消息模型 六、简单的消息生产与消费 1、消费者类 2、生产者类 3、基本消息队列的消…...
C#WPF用户控件及自定义控件实例
本文演示C#WPF自定义控件实例 用户控件(UserControl)和自定义控件(CustomControl)都是对UI控件的一种封装方式,目的都是实现封装后控件的重用。 只不过各自封装的实现方式和使用的场景上存在差异。 1 基于UserControl 创建 创建控件最简单一个方法就是基于UserControl …...
大模型的语言能力
NLP作为一个领域为基础模型开辟了道路。虽然这些模型在标准基准测试中占据主导地位,但这些模型目前获得的能力与那些将语言描述为人类交流和思维的复杂系统的能力之间存在明显的差距。针对这一点,我们强调语言变异的全部范围(例如,…...
直播岗位认知篇
一、直播岗位概述 直播岗位,也称为直播主播或直播运营,是指在互联网直播平台上进行直播活动的工作岗位。该岗位的主要职责是通过直播形式,向观众展示自己的才艺、分享生活、销售产品或服务,并引导观众互动和参与。直播主播需要具…...
后端技术知识点内容-全部内容-面试宝典-后端面试知识点
文章目录 -2 flink-1 linux of viewlinux查看占用cup最高的10个进程的命令; 〇、分布式锁 & 分布式事务0-1分布式锁--包含CAP理论模型概述分布式锁:分布式锁应该具备哪些条件:分布式锁的业务场景: 分布式锁的实现方式有&#…...
3.ubuntu20.04环境的ros搭建
ros搭建比较简单,主要步骤如下: 1.配置ros软件源: sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list 2.配置密钥 sudo apt-key adv --keyser…...
米诺地尔行业分析:预计2029年将达到14亿美元
米诺地尔市场规模庞大,不仅包括消费品市场和服务行业,还涵盖了创新科技领域。随着经济的发展和市场需求的不断增长,米诺地尔市场的规模将继续扩大,各行各业都将面临更多机遇和挑战。 随着社会经济发展和城市化进程的推进ÿ…...
在Spring Boot中使用Thymeleaf开发Web页面
引言: 为啥写这篇文章呢?我明明就没怎么用过这个Thymeleaf进行web开发,用JSP也行,三剑客也行,或者Vue,React,PHP等等,不好吗? 那我为啥写这篇博客呢?这个写了…...
2023年亚太杯数学建模思路 - 案例:感知机原理剖析及实现
文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法,其…...
linux高级篇基础理论五(用户安全,口令设置,JR暴力破解用户密码,NMAP端口扫描)
♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技…...
鸿蒙原生应用/元服务开发-AGC分发如何配置版本信息(上)
1.配置HarmonyOS应用的“发布国家或地区”。 2.设置是否为开放式测试版本。 注意:HarmonyOS应用开放式测试当前仅支持手机、平板、智能手表。如开发者想发布为开放式测试版本,选择“是”。正式发布的版本请选择“否”。 3.在“软件版本”下点击“软件包…...
探索Scrapy中间件:自定义Selenium中间件实例解析
简介 Scrapy是一个强大的Python爬虫框架,可用于从网站上抓取数据。本教程将指导你创建自己的Scrapy爬虫。其中,中间件是其重要特性之一,允许开发者在爬取过程中拦截和处理请求与响应,实现个性化的爬虫行为。 本篇博客将深入探讨…...
渗透测试--3.中间人攻击
渗透测试--3.中间人攻击 一 .中间人攻击arp欺骗DNS欺骗无线局域网漏洞利用使用 Ettercap 执行欺骗攻击arp欺骗实例1、首先查看欺骗之前靶机ip以及默认网关,2、查看kali的IP地址(192.168.76.134),MAC:000c294079903、使用Ettercap,将A主机和B主机加入到target中4、点击右上…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
