【win11+vs 2017+OpenCV4.5.5+Qt5.12配置】详细安装过程+小问题解决

news2024/12/29 9:59:54

0.版本选择

由于Qt5无法与最新的vs2022兼容,扩展工具中一直显示不可用,所以将vs降级成vs2017。
在安装Qt的过程中,会选择安装Qt套件,其中就的MCVS 2017,说明vs2017是与qt兼容的。
当然也可以用qt creator这一原生IDE。
OpenCV版本目前是最新的4.8.0,使用过程中没有什么问题,但是还是安装低版本大概率避免一些玄学问题。

1.安装vs 2017和MingW

我选择安装的是vs2017专业版,过程略…

mingw是win平台下gcc ,g++工具包等,熟悉Linux的可能经常用到,安装后在命令行编译源码了。
官网往下翻:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/
在这里插入图片描述
可以选择在线安装器,也可以选择安装包解压缩。后面的后缀不需要去知道,我选择第二个。
解压缩以后在本地文件中找到bin文件夹,里面有很多exe,这些都要添加到环境变量当中。
找一个合适的位置存放mingw,然后copy地址,粘贴到环境变量当中,让系统识别到bin下面的可执行程序,重启电脑。
在这里插入图片描述

测试:输入g++ --version,打印内容显示检测到8.1.0的版本,完成。
在这里插入图片描述

2.安装Cmake

cmake官网:https://cmake.org/download/
找一个合适的版本下载,Windows下比较方便,可以直接在线安装cmake,所以直接选择.msi
按选择的是3.26.4,推荐在线安装节省时间;
当然也可以源码安装,这就需要刚才下载的mingw了。
在这里插入图片描述
安装:选择添加到环境变量,新建桌面图标
在这里插入图片描述
检查一下环境变量,安装完成后系统会自动给你添加进去。同时桌面会生成一个cmake-gui的图标。就是可视化操作cmake编译。
cmake编译的原理和过程可以自行百度一下,了解过程有利于编译操作。

3.安装OpenCV

(1)下载opencv

OpenCV官网:https://opencv.org/releases/
在这里插入图片描述

Windows下可以安装exe执行程序(直接点击Windows),当然也可以下载可跨平台的源码(Sources)来安装。Linux下只能源码安装。
区别的话,直接运行编译好的exe,程序会直接将OpenCV的库打包成一个名字叫opencv_world的库,这里面包含了所有的库文件,就是说链接库文件的时候直接连接到这一个库就好了。
源码编译的自由度比较高,可以选择安装哪一些库文件,当然也可以安装成一个总的opencv_world。

为了更好的认识各种库扮演的角色,我这里选择源码安装,所以就要用到cmake编译工具。
解压zip后,OpenCV文件夹中不仅有源码还有相关测试代码和data,以及下方的CMakeLists.txt。

(2)下载opencv-contrib

自从OpenCV 3.0之后,很多经典的算法,比如sift和surf特征点检测算法,由于专利原因,已经不包含在OpenCV的源码当中了,需要下载OpenCV contrib包才能继续使用。
opencv-contrib:https://github.com/opencv/opencv_contrib/tags
找到对应的版本号下载,解压缩。

(3)cmake编译opencv源码

第一行是你的源码文件,第三行是你要编译到哪里,通常都是新建一个build来存放,这样显得整齐,不破坏源码文件。
在这里插入图片描述
点击configure,选择你的编译平台和架构,其他默认,开始配置:
在这里插入图片描述

等待2分钟左右,编译会显示done,这时候上面会出现很多模块。但是检查一下会出现很多爆红的,大概意思就是没有下载到链接(被墙了),也就意味着我们要将这一部分手动下载,这也是最麻烦的一步了,如果无法解决,那还是回到之前说的,直接exe在线安装!

在这里插入图片描述

到opencv-4.5.5/build目录中找到CMakeDownloadLog.txt日志文件,里面提供了无法下载的包的网址,我们要做的就是一个一个去下载;比如圈起来的部分,前面是下载网址,

在这里插入图片描述

打开D:\Tools\opencv-4.5.5.cache,发现里面的内容都是0kb,也说明了文件没有下载下来,我们要做的就是下载对应的文件,然后替换掉他,但要保证名字一样。

这时候分两种情况:
一种是输入网址会下载不同后缀的包文件,找到后复制到.cache文件夹下对应的目录中,并修改名字,确保和0kb的那个文件名字一致。
另一种情况是输入网址会给出一些指令,不要复制到本地保存,直接找到本地文件的名字,复制名字,在网页中右击另存为,存到目标位置并用刚才复制的名字,提示是否替换选择是。

然后重新配置,done以后没有标红了,根据自己的需要选择编译的包,我这里选择了opencv_world和with qt、with opengl。选完后点击generate生成,done后点击open project,用vs 2017来打开

在这里插入图片描述

打开vs2017以后,右边会出现整个sln,右击-批生成-选择两种ALL_BUILD和ALL_INSTALL:
在这里插入图片描述
在这里插入图片描述

点击生成,等待大概20分钟,如果有未编译通过的,大概率是字符规则的问题,解决方案:https://blog.csdn.net/pypyquixue/article/details/123448814
这个链接中评论区有个回答是有用的,大意就是报错区域附近有日文注释,编译器看不懂,删掉那几句日文注释就好啦。
修改完以后,一定要清理解决方案,再重复批生成那一步。大概率是没问题的,我也试过最新版本,也是没问题的。

(4)cmake编译opencv—contrib

这个文件可以理解为扩展包,里面一些特殊的库放在里面,对于常用的算法基本用不到。为了完整,也同时编一下吧,流程跟之前的几乎一致:
在这里插入图片描述
打开cmake-gui,保持之前的选择路径不变
搜索extra,选择路径就是你下载的opencv-contrib文件夹下面的modules;

在这里插入图片描述

搜索OPENCV_ENABLE_NONFREE,选择
在这里插入图片描述
点击configure,还是爆红,像上面一样解决,查找,手动下载,替换~~。
ok.

(5)添加环境变量、测试

在这里插入图片描述
打开vs,写一段代码:

#include<iostream> 
#include <opencv2/core.hpp> 
#include <opencv2/highgui.hpp> 
using namespace cv;
int main()
{
	Mat img = imread("D:\\Users\\Desktop\\opencv_test\\lena.jpg");//换成你的地址
	namedWindow("测试opencv");
	imshow("测试opencv", img);
	waitKey(0);
	return 0;
}

这时候头文件会标红,运行的话要找不到库文件,是因为还没有配置好路径信息:
包含目录是指头文件的路径,库目录是指lib库文件的路径
在这里插入图片描述
最后在引入库,

在这里插入图片描述

保存后运行,
在这里插入图片描述

参考链接:
1.opencv_contrib的安装和配置
2.OpenCV安装教程:Windows 安装 Visual Studio + OpenCV + OpenCV contrib

4.Qt配置

(1)安装Qt

Qt安装镜像网址:https://download.qt.io/
直接找个安装器exe安装即可,一路点,找到合适的地方保存,并勾选安装qt creator原生IDE
选择套件这里勾选上MSVC和mingw,一个是用于vs,一个用于qt creator,下面是一些其他的小功能套件,根据需要选择,上面两个MSVC和mingw都选上。

在这里插入图片描述
qt这样就安装好了。

(2)vs配置Qt插件

打开vs2017,工具-扩展和更新-联机中搜索Qt-按照提示下载
在这里插入图片描述
安装完成后菜单栏会出现一个qt vs tools,点击进入选择qt versions,找到图示路径下的qmake.exe并选择,会自动识别到
在这里插入图片描述

(3)测试Qt

在新建项目之前先添加一下环境变量:}
在这里插入图片描述

新建一个项目,会发现多了一个Qt选项,
在这里插入图片描述
选择debug模式
在这里插入图片描述
修改一下基类吧
在这里插入图片描述

测试代码有爆红的,是因为还没有配置头文件之类的,
在这里插入图片描述
这样子就可以了,qt配置完成。
在这里插入图片描述

参考链接:https://zhuanlan.zhihu.com/p/632779340

(4)小问题

点击ui界面进行设计的时候,会出现闪退:
在这里插入图片描述
解决方法:VS打开Qt的ui界面几秒后闪退(ui无法打开文件)的解决办法
方法一就可以解决的,很简单。

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

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

相关文章

PROFINet转Modbus协议转换网关Profinet数据通讯模块

产品概述 你是否曾经遇到过不同网络协议之间的沟通问题&#xff1f;捷米特JM-RTU-PN为你解决这个难题&#xff01; 捷米特JM-RTU-PN是一款数据通讯模块&#xff0c;能够实现PROFINet网络与Modbus网络之间的数据传输。它可以将RS485网络连接到PROFINet网络&#xff0c;并支持不…

《剑指offer》刷题(1)链表篇

class ListNode: def __init__(self, x): self.val x self.next None class Solution: def printListFromTailToHead(self , listNode: ListNode) -> List[int]: #用栈记录遍历的结果&#xff0c;然后返回出栈结果 if listNode is None: return [] stack [] p listNode…

8.2Thread类的常见属性

1. 2.前台线程和后台线程 前台线程:影响进程结束(如果前台线程没有执行完,进程不结束). 后台线程(守护线程):不影响线程结束. 创建线程默认是前台线程. 修改成后台线程:thread.setDaetrue);

33.利用abs 解决绝对值问题(matlab程序 )

1.简述 abs函数的功能是绝对值和复数的模 语法 Y abs(X) 说明 Y abs(X) 返回数组 X 中每个元素的绝对值。如果 X 是复数&#xff0c;则 abs(X) 返回复数的模。 示例 标量的绝对值 y abs(-5) y 5 向量的绝对值 创建实值的数值向量。 x [1.3 -3.56 8.23 -5 -0.01…

ARP断网攻击及防御

ARP断网攻击及防御 攻击防御 攻击 PC1的IP地址 10.9.136.222 PC2的IP地址 10.9.136.55在局域网里通信 需要有IP地址和MAC地址 两台电脑PC1和PC2要想相互通信&#xff0c;PC1在连接PC2的时候&#xff0c;PC1会先查看自己的ARP缓存表&#xff08;命令&#xff1a;arp -a &#xf…

利用鸿鹄可观测性监控Istio Ingress网关

一、需求描述 在上一篇《利用Vector和鸿鹄搭建微服务应用的可观测性平台》中&#xff0c;阐述了微服务的基本概念、优点及如何利用鸿鹄来处理分布式应用的日志。本文将进一步讨论微服务架构面临的问题、服务网格及鸿鹄处理Istio Gateway的独特优势。 1.1 微服务架构面临的挑战 …

学习委员之作业管理系统—前端部分

拯救学习委员之作业管理系统—前端部分 项目背景 学习委员收集作业的过程&#xff0c;繁琐且曲折&#xff0c;作者充分理解并体谅为大家服务的苦逼学习委员&#xff0c;以此为出发点和灵感&#xff0c;设计并开发了此套作业管理系统&#xff0c;希望能帮助各位提高效率&#…

语义检索系统【三】:基于Milvus 搭建召回系统抽取向量进行检索,加速索引

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

[openCV]基于拟合中线的智能车巡线方案V4

import cv2 as cv import os import numpy as np# 遍历文件夹函数 def getFileList(dir, Filelist, extNone):"""获取文件夹及其子文件夹中文件列表输入 dir&#xff1a;文件夹根目录输入 ext: 扩展名返回&#xff1a; 文件路径列表"""newDir d…

Linux(四)--包软件管理器与Linux上软件的下载示例

一.包软件管理器【yum和apt】 1.先来学习使用yum命令。yum&#xff1a;RPM包软件管理器&#xff0c;用于自动化安装配置Linux软件&#xff0c;并可以自动解决依赖问题。通过yum命令我们可以轻松实现软件的下载&#xff0c;查找&#xff0c;卸载与更新等管理软件的操作。 最常用…

线程池-手写线程池Linux C简单版本(生产者-消费者模型)

目录 简介手写线程池线程池结构体分析task_ttask_queue_tthread_pool_t 线程池函数分析thread_pool_createthread_pool_postthread_workerthread_pool_destroywait_all_donethread_pool_free 主函数调用 运行结果 简介 本线程池采用C语言实现 线程池的场景&#xff1a; 当某些…

Delphi 开发的QR二维码生成工具,开箱即用

目录 一、基本功能&#xff1a; 二、使用说明&#xff1a; 三、操作演示gif 四、下载链接 在日常的开发中&#xff0c;经常需要将一个链接生成为二维码图片&#xff0c;特别是在进行支付开发的时候&#xff0c;因为我们支付后台获取了支付链接&#xff0c;需要变成二维码扫…

设计模式行为型——解释器模式

目录 什么是解释器模式 解释器模式的实现 解释器模式角色 解释器模式类图 解释器模式举例 解释器模式代码实现 解释器模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是解释器模式 解释器模式&#xff08;Interpreter Pattern&#xff09;属于行为型模式&…

SOLIDWORKS中的弹簧设计指南

SOLIDWORKS是一款广泛使用的三维计算机辅助设计软件&#xff0c;可以用于设计各种机械零件和组件&#xff0c;包括弹簧。在SOLIDWORKS中设计弹簧需要注意一些关键点&#xff0c;本文将为您介绍SOLIDWORKS中的弹簧设计指南。 1. 弹簧类型 按受力性质&#xff0c;弹簧类型包括压…

小程序云开发快速入门(1/4)

前言 从上次完成了码仔备忘录本地版本后&#xff0c;码仔就养成了每天记录备忘录的好习惯&#xff0c;每周早上会记录下自己要做的任务&#xff0c;然后晚上在复盘一下今天的计划是否完成。 有一天&#xff0c;码仔看到它最喜欢的码妞在一旁愁眉苦脸。 码仔&#xff1a;“怎么…

5个设计师必备的绘画工具,不看错亿

在设计工作中&#xff0c;绘画工具是设计师经常会用到的设计工具&#xff0c;今天本文将与大家分享5个好用的绘画工具&#xff0c;一起来看看吧&#xff01; 1、即时灵感 即时灵感是一款非常受欢迎的绘画工具&#xff0c;它为设计师提供了自由的绘画方式&#xff0c;也提供了…

【雕爷学编程】Arduino动手做(181)---Maixduino AI开发板

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

091.粉刷房子

一、题目 剑指 Offer II 091. 粉刷房子 - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public:int minCost(vector<vector<int>>& costs) {int row costs.size();int col costs[0].size();if (row 1)return min(min(costs[0][0], cos…

Liunx开发工具

Liunx开发工具 1.Linux编辑器-vim使用1.1vim的基本概念1.2vim的基本操作1.3命令模式命令集1.3.1光标定位1.3.2光标移动1.3.3文本复制1.3.4文本操作 1.4插入模式命令集1.5底行模式命令集 2.vim配置3.sudo配置4.Linux编辑器-gcc/g使用4.1背景知识4.2gcc如何操作 5.函数库5.1函数库…

ES6 - generator和async函数

一、前言 ES6 诞生以前&#xff0c;异步编程的方法&#xff0c;大概有下面四种。 回调函数事件监听发布/订阅Promise 对象 回调函数本身并没有问题&#xff0c;它的问题出现在多个回调函数嵌套会造成回调地狱&#xff0c;非常不利于代码的维护和逻辑混乱等问题&#xff1b; …