【win11+vs 2017+OpenCV4.5.5+Qt5.12配置】解决了过程中遇到的小问题

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.

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

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

相关文章

LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM 论文阅读

论文信息 题目:LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM 作者:Devendra Singh Chaplot, Dhiraj Gandhi 项目地址:https://devendrachaplot.github.io/projects/Neural-SLAM 代码地址:https://github.com/devendrachaplot/N…

[软件工程] 全局分析规格说明书模板

1 价值需求 描述目标系统的价值需求,可以附上商业模式画布。 1.1 利益相关者 描述目标系统的利益相关者,包括终端用户、企业组织、投资人等。 1.2 系统愿景 描述利益相关者共同达成一致的愿景,该愿景的描述需要对准企业的战略目标。 1.3 系统…

机器学习分布式框架ray运行pytorch实例

Ray是一个用于分布式计算的开源框架,它可以有效地实现并行化和分布式训练。下面是使用Ray来实现PyTorch的训练的概括性描述: 安装Ray:首先,需要在计算机上安装Ray。你可以通过pip或conda来安装Ray库。 准备数据:在使用…

ES6基础知识九:你是怎么理解ES6中Module的?使用场景?

一、介绍 模块,(Module),是能够单独命名并独立地完成一定功能的程序语句的集合(即程序代码和数据结构的集合体)。 两个基本的特征:外部特征和内部特征 外部特征是指模块跟外部环境联系的接口…

Stable Diffusion AI绘画学习指南【插件安装设置】

插件安装的方式 可用列表方式安装,点开Extensions 选项卡,找到如下图,找到Available选项卡,点load from加载可用插件,在可用插件列表中找到要装的插件按install 按扭按装,安装完后(Apply and restart UI)应…

15、两个Runner初始化器和 springboot创建非web应用

两个Runner初始化器 两个Runner初始化器——主要作用是对component组件来执行初始化 这里的Component组件我理解为是被Component注解修饰的类 Component //用这个注解修饰的类,意味着这个类是spring容器中的一个组件,springboot应用会自动加载该组件。 …

【原创】IPTVC2实现方案(文末有demo)

前言: 名词解释: IPTVC2, 全称: 央视国际节目定价发布接口规范,标准版本当前最新为2.7.12 附赠资源链接,侵删:规范 规范中提供的样例,实现基于axis1.4(2006的时代宠物) 基于axis1版本的实现参考: Spring boot 集成Axis1.4 ,使用wsdd文件发…

【CSDN】

欢迎使用Mark编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持&#xff0c…

自动驾驶感知系统-全球卫星定位系统

卫星定位系统 车辆定位是让无人驾驶汽车获取自身确切位置的技术,在自动驾驶技术中定位担负着相当重要的职责。车辆自身定位信息获取的方式多样,涉及多种传感器类型与相关技术。自动驾驶汽车能够持续安全可靠运行的一个关键前提是车辆的定位系统必须实时…

【数学建模】——拟合算法

【数学建模】——拟合算法 拟合算法定义:与插值问题不同,在拟合问题中不需要曲线一定经过给定的点。拟合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好&…

好用的Linux远程工具

你好,我是Martin,今天给大家介绍几款主流的远程工具。 远程工具介绍 关于远程连接的用户分类时这样的,通常需要进行远程连接的人有两类,一类是系统管理员,另一类是普通的用户。远程连接工具是一些可以让你通过网络连接…

2023年华数杯建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米,宽为12米&#xff0…

Nacos配置中心设置Mongodb

目录 1.common模块导入nacos config依赖 2.common模块新建bootstrap.yaml 3.在自己的模块导入common模块依赖 4.打开nacos新建配置,发布 5.运行服务并测试 效果:在部署完成后,其他人可以自动连接到你本地mongoDB数据库,无需再…

算法练习(4):牛客在线编程05 哈希

package jz.bm;import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet;public class bm5 {/*** BM50 两数之和*/public int[] twoSum (int[] numbers, int target) {int[] res new int[…

小目标检测总结

1、小目标检测长期以来是目标检测中的一个难点,其旨在精准检测出图像中可视化特征极少的小目标(32 像素32 像素以下的目标)。相 对于常规尺寸的目标,小目标通常缺乏充足的外观信息,因此难以将它们与背景或相似的目标区…

建模教程:如何利用3ds Max 和 After Effects 实现多通道渲染和后期合成

推荐: NSDT场景编辑器 助你快速搭建可二次开发的3D应用场景 1. 创建基本场景 步骤 1 打开 3ds Max。 打开 3ds Max。 步骤 2 我做了一个简单的场景。我放了三个 彼此之间有一定距离的物体。 制作对象 步骤 3 按 Ctrl-C 键 在透视视图中创建摄影机。 创建相机 …

Android性能优化—LeakCanary内存泄漏检测框架分析。

一、什么叫内存泄漏、内存溢出? 内存溢出(out of memory):是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个10M的Bitmap,但系统分配给APP的连续内存不足10M&#xff0c…

socket()、bind()、listen()、htons()

socket() socket() 是一个系统调用函数,用于创建一个套接字(socket),通过该套接字进行网络通信。在这段代码中,socket() 函数被用于创建一个本地套接字。 具体来说,这是 socket() 在代码中的使用方式&…

P3372 【模板】线段树 1(内附封面)

【模板】线段树 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 k k k。求出某区间每一个数的和。 输入格式 第一行包含两个整数 n , m n, m n,m,分别表示该数列数字的个数和操作的总个数。 …

数据库管理员知识图谱

初入职场的程序猿,需要为自己做好职业规划,在职场的赛道上,需要保持学习,并不断点亮自己的技能树。  成为一名DBA需要掌握什么技能呢,先让Chat-GPT为我们回答一下: 数据库管理系统 (DBMS)知识&#xff…