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在后面加上这个就可以保证图片不变形
}

工程源代码:

待更新。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java使用 TCP 的 Socket API 实现客户端服务器通信

一&#xff1a;什么是 Socket(套接字) Socket 套接字是由系统提供于网络通信的技术, 是基于 TCP/IP 协议的网络通信的基本操作&#xff0c;要进行网络通信, 需要有一个 socket 对象, 一个 socket 对象对应着一个 socket 文件, 这个文件在 网卡上而不是硬盘上, 所以有了 sokcet…

3D应用开发引擎HOOPS如何促进AEC数字化架构革新?

随着科技的不断发展&#xff0c;建筑、工程和施工&#xff08;AEC&#xff09;行业正在掀起令人瞩目的数字化转型浪潮。在这一变革的过程中&#xff0c;Tech Soft 3D的HOOPS SDK&#xff08;软件开发工具包&#xff09;正扮演着关键的角色&#xff0c;为构建世界一流的AEC和BIM…

【CVE-2023-4357】Chrome-XXE 任意文件读取漏洞复现及原理解析

官方文档 https://bugs.chromium.org/p/chromium/issues/detail?id1458911 漏洞描述 Short description: Libxslt is the default XSL library used in WebKit based browsers such as chrome, safari etc. Libxslt allows external entities inside documents that are lo…

UML统一建模语言

UML包含3种构造块&#xff1a;事物、关系、图。 事物&#xff1a;模型中代表性成分的抽象关系&#xff1a;把事物结合在一起图&#xff1a;聚集了相关的事物 事物 结构事务&#xff1a;模型的静态部分&#xff0c;包括类、接口、协作、用例、主动类、构件、制品、结点 行为事…

ubuntu 解决pip/pip3安装库各种报错问题

诸如下面类似的报错: 都是由于pip损坏导致 File “/usr/local/bin/pip3”, line 7, in from pip._internal.cli.main import main File “/usr/local/lib/python3.5/dist-packages/pip/_internal/cli/main.py”, line 57 sys.stderr.write(f"ERROR: {exc}") 解绝办法…

py split 用法

在Python中&#xff0c;split()函数用于将字符串按照指定的分隔符进行分割&#xff0c;并返回一个字符串列表。它的基本用法如下&#xff1a; string "Hello, World!" split_string string.split(",") print(split_string)输出结果为&#xff1a; [Hel…

节点导纳矩阵

节点导纳矩阵&#xff08;Node Admittance Matrix&#xff09;是电力系统分析中的关键工具&#xff0c;它用于描述电力系统中不同节点之间的电导和电纳参数。这个矩阵为电力工程师提供了深入了解电力系统运行和分析所需的数学工具。 节点导纳矩阵是一个复数矩阵&#xff0c;通常…

Shell判断:模式匹配:case(一)

一、前言 shell编程中if和case都是用来做流控的。 二、case语法结构 case 变量 in 模式1&#xff09; 命令序列1 ;; 模式2&#xff09; 命令序列2 ;; 模式3&#xff09; 命令序列3 ;; *) 无匹配…

如何科学的进行Android包体积优化

这篇文章会分享小厂如何做包体积优化相关主题&#xff0c;涉及内容包括&#xff1a;1) Android包体积优化的一种可能是比较标准的推进做法&#xff0c;2) 大致流程的心路历程和思考方式&#xff0c;3) 如何去总结和分享你们进行过的包体积优化项目。本文不仅仅是一篇分享&#…

Android Binder 是怎么实现进程间通信

文章目录 Android Binder 是怎么实现进程间通信 Android Binder 是怎么实现进程间通信 Android Binder 机制的实现基于 Linux 内核中的 Inter-Process Communication&#xff08;IPC&#xff09;机制&#xff0c;具体来说&#xff0c;它是通过进程间共享内存和进程间调用&…

SpringCloud--分布式锁实现

一、简介 分布式锁其实就是控制分布式系统中不同进程共同访问共享资源的一种锁的实现。在分布式系统中各个微服务都是独立部署在不同的服务器上&#xff0c;如果多个服务同时操作同一个共享资源的话&#xff0c;就不能像单体服务那样通过synchronized或者Lock等同步机制保证一…

深入探索 PaddlePaddle 中的计算图

**引言** 计算图是深度学习平台 PaddlePaddle 的核心组件之一&#xff0c;它提供了一种图形化的方式来表示和执行深度学习模型。通过了解和理解 PaddlePaddle 中的计算图&#xff0c;我们可以更好地理解深度学习的工作原理&#xff0c;并且能够更加灵活和高效地构建和训练复杂…

stable diffusion十七种controlnet详细使用方法总结

个人网站&#xff1a;https://tianfeng.space 前言 最近不知道发点什么&#xff0c;做个controlnet 使用方法总结好了&#xff0c;如果你们对所有controlnet用法&#xff0c;可能了解但是有点模糊&#xff0c;希望能对你们有用。 一、SD controlnet 我统一下其他参数&#…

PLC梯形图实操——风扇正反转

文章目录 1.项目内创建函数块&#xff08;FB&#xff09;2.项目内创建数据块&#xff08;DB&#xff09;2.1去除优化块访问2.2去除优化块的访问后对数据块进行编译 3.在函数块&#xff08;FB&#xff09;内实现正转反转的自锁与互锁3.1在函数块内实现电机正反转的梯形图 4.主函…

2 Redis的高级数据结构

1、Bitmaps 首先&#xff0c;最经典的应用场景就是用户日活的统计&#xff0c;比如说签到等。 字段串&#xff1a;“dbydc”&#xff0c;根据对应的ASCII表&#xff0c;最后可以得到对应的二进制&#xff0c;如图所示 一个字符占8位&#xff08;bit&#xff09;&#xff0c;…

解决SpringBoot中的MyBatis驼峰命名映射报错column不匹配问题

使用MyBatis-Plus映射出现与数据库column匹配不上的报错 Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘register_time’ in ‘field list’ 源代码&#xff1a; Data TableName("db_account") public class Account {TableId(type IdType.AUTO)Inte…

Java的包,import

包名定义&#xff1a; &#xff08;1&#xff09;名字全部小写 &#xff08;2&#xff09;中间用.隔开 &#xff08;3&#xff09;一般都是公司域名倒着写 &#xff1a; com.jd com.msb &#xff08;4&#xff09;加上模块名字&#xff1a; com.jd.login com.jd.re…

mysql mvcc介绍

一、什么是mvcc MVCC&#xff0c;即Multi-Version Concurrency Control &#xff08;多版本并发控制&#xff09;。它是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对数据库的并发访问&#xff0c;在编程语言中实现事务内存。 二、什么时候会出现…

HTTP1.1升级HTTP2.0

HTTP1.1升级HTTP2.0 一&#xff0c;前言介绍 1.为什么要升级http2.0 HTTP2.0相比于HTTP1.x有以下几个优点&#xff1a; 二进制分帧&#xff1a;HTTP2.0将所有传输的信息分割为更小的消息和帧&#xff0c;并采用二进制格式对它们进行编码&#xff0c;这样可以更好地对数据进行…

【Rust】快速教程——模块mod与跨文件

前言 道尊&#xff1a;没有办法&#xff0c;你的法力已经消失&#xff0c;我的法力所剩无几&#xff0c;除非咱们重新修行&#xff0c;在这个世界里取得更多法力之后&#xff0c;或许有办法下降。——《拔魔》 \;\\\;\\\; 目录 前言跨文件mod多文件mod 跨文件mod //my_mod.rs…