【QT】QT搭建OpenCV环境

QT/OpenCV

      • 01、开始之前
      • 02、QT
      • 03、CMake
      • 04、OpenCV
      • 05、配置
      • 06、测试

01、开始之前

本文版本:
1、QT:Based on Qt 5.12.2 (MSVC 2017, 32 bit),编译方式是MinGW
2、CMake:cmake-3.27.0-rc4-windows-x86_64.msi
3、OpenCV:OpenCV – 4.5.1
4、windows: win11/win10都一样

说明一下,OpenCV不要装太新的版本,因为本文方式使用CMark的方式。如果安装了最新的那几个版本可能会导致编译OpenCV的时候出现很多源代码错误,当然有其他方式可以解决,但是太麻烦,回退低版本就能解决兼容问题。(看个人)

02、QT

QT的安装这里不做介绍,傻瓜式安装,只是在选择模块的时候,如果内存足够就全部勾选,如果内存不够,以后用到需要的模块时可能就比较麻烦,这点是不如VS的,可以追加下载,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/

03、CMake

CMake接触不多,这里记录一下。

CMake:

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

官网地址:https://cmake.org/download/

截止2023-07-10,最新版本是3.27.0
在这里插入图片描述

这里我已经安装过了,所以图片我直接网上找了
在这里插入图片描述
在这里插入图片描述
下面这一步很重要,不然就得自己手动去PATH环境添加Cmake的环境变量了:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
等待安装完成先不管了,待会儿需要用到。

04、OpenCV

OpenCV的介绍这里不做介绍,详情可以参考另外一位博主的博客:https://blog.csdn.net/m0_60720471/

本文版本:
在这里插入图片描述
截止当前最新版本:
在这里插入图片描述
下载windows版本,然后运行exe即可在当前exe文件夹下面生成一个同名文件夹。

下面我截图到这一步,有哪些环境变量:
在这里插入图片描述

05、配置

进行到这里,就可以进行Cmake的编译了,这里进入Cmake安装目录下的bin,双击exe运行起来。
下面所有的图和路径等根据实际安装路径决定,图是网上找的。

在这里插入图片描述

Where is the source code: C:\opencv\sources
Where to build the binaries: C:\opencv\sources\opencv-build(opencv-build这个文件夹要新建)

保持默认MinGW Makefiles,点击Specify native compilers,再next:
在这里插入图片描述

C D:/Qt/Qt5.12.9/Tools/mingw730_64/bin/gcc.exe
C++ D:/Qt/Qt5.12.9/Tools/mingw730_64/bin/g++.exe
Fortran不用管

在这里插入图片描述

下一步:
在这里插入图片描述
Configuring done之后,会出现一大片红的,不用管,下拉将WITH_OPENGL和WITH_QT选中即可,然后再次点击Configure:
在这里插入图片描述
此时仍会有红色出现,继续按照下一步配置:
在这里插入图片描述
依次将下面的值设置好:

Set Qt5Concurrent_DIR to D:\Qt\Qt5.12.1\5.12.1\mingw73_64\lib\cmake\Qt5Concurrent
Set Qt5Core_DIR to D:\Qt\Qt5.12.9\5.12.9\mingw73_64\lib\cmake\Qt5Core
Set Qt5Gui_DIR to D:\Qt\Qt5.12.9\5.12.9\mingw73_64\lib\cmake\Qt5Gui
Set Qt5OpenGL_DIR to D:\Qt\Qt5.12.9\5.12.9\mingw73_64\lib\cmake\Qt5OpenGL
Set Qt5Test_DIR to D:\Qt\Qt5.12.9\5.12.9\mingw73_64\lib\cmake\Qt5Test
Set Qt5Widgets_DIR to D:\Qt\Qt5.12.9\5.12.9\mingw73_64\lib\cmake\Qt5Widgets
Set Qt5_DIR to D:\Qt\Qt5.12.9\5.12.9\mingw73_64\lib\cmake\Qt5

再次点击Configure之后,红色消失,最后点击Generate:
在这里插入图片描述
Generate完成之后,关闭Cmake即可,此时进入之前我们新建的文件夹D:\OpenCV4.5.1\opencv\opencv-build
我这里名字是install。
在这里插入图片描述
将鼠标放在该文件夹界面内,按住shift键,同时点击鼠标右键,点击在此处打开Powershell窗口(s),进入Windows Powershell,输入

mingw32-make -j 32   // 这里8是表示多线程处理,你的配置够高可以加大这个数字,加快编译速度,反之,减少就行。

等待编译完之后继续输入:

mingw32-make install

等待完成之后将编译后的路径配置进环境变量:
在这里插入图片描述
到这里,一切就绪,打开QT测试。

06、测试

新建QT项目这里不多说,创建一个QMainWindow即可。

.pro文件中添加如下:

INCLUDEPATH += \
            C:\opencv\install\install\include \

LIBS += \
        C:\opencv\install\lib\libopencv_*.a \

在这里插入图片描述

这里我不贴完整代码了,项目里面的OpenCV+海康威视了。

下面是一个简单的示例:
在这里插入图片描述
记录一下!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习——优化器Optimizer

代码以及详细注释: import torch import torch.utils.data as Data import torch.nn.functional as F import matplotlib.pyplot as plt# torch.manual_seed(1) # reproducible """超参数 """ # 学习率 LR 0.01 # 批大小 BATCH_…

什么是RPC并实现一个简单的RPC

1. 基本的RPC模型 主要介绍RPC是什么,基本的RPC代码,RPC与REST的区别,gRPC的使用 1.1 基本概念 RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务本地过程调用&am…

详解Jenkins配置邮件通知

前言 这几天Darren洋在使用Jenkins定时构建jmeter脚本中,要用到邮箱配置,故记录之。 一、Jenkins默认邮箱通知 这里填好smtp服务器地址和邮箱后缀,这样下面的账号就不用加邮箱后缀了。 网易邮箱设置以下我就不说废话文学了,直接上…

智能优化算法——哈里鹰算法(Matlab实现)

目录 1 算法简介 2 算法数学模型 2.1.全局探索阶段 2.2 过渡阶段 2.3.局部开采阶段 3 求解步骤与程序框图 3.1 步骤 3.2 程序框图 4 matlab代码及结果 4.1 代码 4.2 结果 1 算法简介 哈里斯鹰算法(Harris Hawks Optimization,HHO),是由Ali Asghar Heid…

【深度剖析】 快速排序为什么不稳定?!

文章目录 零、前言一、快速排序的步骤原理二、什么是稳定性?三、不稳定的地方在哪里?四、怎么让快速排序变得稳定?1、采用双指针的快速排序A 思路简述B 参考代码 :C 算法分析 2、基于递归的快速排序A 思路简述B 参考代码C 算法分析 3、采用归…

【K8S系列】深入解析K8S调度

序言 做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记论点蓝色:用来标记论点 Kubernetes (k8s) 是一个容器编…

使用docker部署rancher并导入k8s集群

前言:鉴于我已经部署了k8s集群,那就在部署rancher一台用于管理k8s,这是一台单独的虚拟环境,之前在k8s的master节点上进行部署并未成功,有可能端口冲突了,这个问题我并没有深究,如果非要通过修改…

C#使用Chart进行统计,切换不同的图表类型

WindowsForm应用程序中Chart图表控件所属的命名空间: Chart 命名空间: System.Windows.Forms.DataVisualization.Charting 对应的dll路径: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Syst…

COT、COT-SC、TOT 大预言模型思考方式||底层逻辑:prompt设定

先讲一下具体缩写的意思 COT-chain of thoughts COT-SC (Self-consistency) Tree of thoughts:Deliberate problem solving with LLM 我理解其实不复杂 1. 最简单的是:直接大白话问一次 (IO) 2. 进阶一点是:思维链,…

PDF转CAD后尺寸如何保持一致?这几种方法可以尝试一下

CAD文件是可编辑的,可以进行修改、添加和删除,这使得在CAD软件中进行编辑更加容易和灵活。这意味着,如果需要对图纸进行修改或者添加新的元素,可以直接在CAD软件中进行操作,而不需要重新制作整个图纸。那么将PDF文件转…

Linux嵌入式项目-智能家居

一、资料下载 二、框架知识 三、MQTT通信协议 1、上位机APP主要工作 1.wait for msg / while(1)订阅等待消息 2.处理消息 客户端创建了两个线程,一个线程用于发布消息,一个线程用于监听订阅消息 (那我的仿真系统也可以啊,一个…

DVDNET A FAST NETWORK FOR DEEP VIDEO DENOISING

DVDNET: A FAST NETWORK FOR DEEP VIDEO DENOISING https://ieeexplore.ieee.org/document/8803136 摘要 现有的最先进视频去噪算法是基于补丁的方法,以往的基于NN的算在其性能上无法与其媲美。但是本文提出NN的视频去噪算法性能要好: 其相比于基于补丁…

Oracle通过函数调用dblink同步表数据方案(全量/增量)

创建对应的包,以方便触发调用 /*包声明*/ CREATE OR REPLACE PACKAGE yjb.pkg_scene_job AS /*创建同步任务*/FUNCTION F_SYNC_DRUG_STOCK RETURN NUMBER;/*同步*/PROCEDURE PRC_SYNC_DRUG_STOCK(RUNJOB VARCHAR2) ; END pkg_scene_job; /*包体*/ CREATE OR REPL…

深入理解netfilter和iptables

目录 Netfilter的设计与实现 内核数据包处理流 netfilter钩子 钩子触发点 NF_HOOK宏与Netfilter裁定 回调函数与优先级 iptables 内核空间模块 xt_table的初始化 ipt_do_table() 复杂度与更新延时 用户态的表,链与规则 conntrack Netfilter(结合iptable…

100种思维模型之安全边际思维模型-92

安全边际, 简而言之即距离某一件糟糕的事件发生,还有多大的空间,安全边际越高,我们就越安全! 安全边际思维模型一个 让生活变得更从容 的 思维模型。 01、何谓安全边际思维模型 一、安全边际思维 安全边际 源于…

ACL 2023 | 持续进化中的语言基础模型

尽管如今的 AI 模型已经具备了理解自然语言的能力,但科研人员并没有停止对模型的不断改善和理论探索。自然语言处理(NLP)领域的技术始终在快速变化和发展当中,酝酿着新的潮流和突破。 NLP 领域的顶级学术会议国际计算语言学年会 …

声网 Agora音视频uniapp插件跑通详解

一、前言 在使用声网SDK做音视频会议开发时, 通过声网官方论坛 了解到,声网是提供uniapp插件的,只是在官方文档中不是很容易找到。 插件地址如下: Agora音视频插件 Agora音视频插件(JS) 本文讲解如何跑通演示示例 二、跑通Demo 2.1 环境安装: 参考: 2. 通过vue-…

vue3+element+sortablejs实现table表格 行列动态拖拽

vue3elementsortablejs实现table动态拖拽 1.第一步我们要安装sortablejs依赖2.在我们需要的组件中引入3.完整代码4.效果 1.第一步我们要安装sortablejs依赖 去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片. npm install so…

巩固一下NodeJs

1、初始化(确保当前电脑有node环境) npm init 2、安装express npm i expressnpm i ws文件结构 3、编写相关代码启动node服务(server.js) //导入下列模块,express搭建服务器,fs用来操作文件、ws用来实现webscoket const express require("expr…

Android 使用webView打开网页可以实现自动播放音频

使用webview 自动播放音视频,场景如,流媒体自动部分,音视频通话等。会出现如下问题: 解决方案如下: 配置webview 如下,这样可以自动播放音频。 webView.getSettings().setMediaPlaybackRequiresUserGestur…