windows下安装Visual Studio + CMake+OpenCV + OpenCV contrib

news2024/12/22 20:45:30

目录

1 安装visual studio

2 安装CMake

3 OpenCV源码安装

3.1 OpenCV源码下载

3.2 OpenCV contrib源码下载

3.3 安装OpenCV

3.4 安装OpenCV-crontrib

3.5 VS生成代码

4 环境配置


最近在研究windows系统上部署安装目标检测算法,需要用到OpenCV软件,因为OpenCV可能是目前使用最广泛的开源图像处理工具了,尤其是在科研领域。于是,本篇博客主要详细记录一下如何在Windows 操作系统下,搭建Visual Studio 2022+OpenCV4.5.5+OpenCV contrib4.5.5的运行环境。

1 安装visual studio

安装Visual Studio比较简单,首先去Visual Studio官网下载安装包

下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux

下载Community版本就可以了,其功能已经够用了。

下载结束后,我们双击下载的安装包,开始安装

然后稍微等待即可

安装完成后会自动弹出以下窗口,根据你要使用Visual Studio所做的事情选择不同的功能集和工作负载,同时选择安装路径(建议使用默认安装路径)。在窗口的上方还有单个组件、语言包、安装位置这些选项,可以不用管,均为默认值,最后点击安装

接着慢慢等待即可,此过程相对比较慢,会下载一些依赖包

 安装完毕后,重启电脑就可以了,到此就已经成功安装Visual Studio 2022软件了。

2 安装CMake

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件。只是CMake的组态档取名为CMakeLists.txt。Cmake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建构方式使用。

首选下载CMake软件安装包,地址如下

Download | CMakehttps://cmake.org/download/我这里下载的是cmake-3.25.2-windows-x86_64.zip,(PS: 根据个人电脑windows系统位数下载对应的版本)

 双击打开下载的文件,点击“next”

勾选接受后点击“next”

添加环境变量和快捷键,看下图描述,然后点击“next”

更改安装位置(可以不更改,默认即可),然后点击“next”

点击“Install”等待安装,后出现右图所示,点击“Finish”安装结束。

测试是否安装成功,打开终端(win+R快捷键然后输入cmd回车),输入 cmake --version后,出现下载的版本号即代表安装成功

3 OpenCV源码安装

3.1 OpenCV源码下载

首先需要去OpenCV的官网下载源码,本教程下载的是OpenCV-4.5.5版本的源码

下载之后解压到特定文件夹,我解压到了D:\soft\opencv\opencv-4.5.5

3.2 OpenCV contrib源码下载

之所以要下载OpenCV contrib源码,是因为自从OpenCV 3.0之后,很多经典的算法,比如sift和surf特征点检测算法,由于专利原因,已经不包含在OpenCV的源码当中了,需要下载OpenCV contrib包才能继续使用。于是OpenCV contrib的官网下载源码安装包

GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modulesRepository for OpenCV's extra modules. Contribute to opencv/opencv_contrib development by creating an account on GitHub.https://github.com/opencv/opencv_contribOpenCV contrib的版本记得要和OpenCV版本符合(例如下图我们选择的是4.5.5版本),还是要下载源码。

下载完解压,本文的路径为D:\soft\opencv\opencv_contrib-4.5.5

3.3 安装OpenCV

在安装CMake软件之后,就可以安装OpenCV源码了,具体步骤如下:

1 首先按下图操作:

2 弹窗出来的配置,按照自己的开发环境配置即可(本文的环境是VS 2022,平台是X64平台),然后点击"Finish"即可:

3 cmake的窗口开始打印信息

4 打印出来的信息中如果出现python、matlab相关的报错,例如下图,直接pass。(Python……ptsd,想到python就ptsd……想起某人爱用python造轮子……)

但是在编译过程中正常都会出现下载不成功的现象,这一步很多博客都没有写清楚如何排查,导致很多新手在之后VisualStudio阶段导包的时候出错。上一步完成之后,大部分情况下会报错。不出意外会看到如下的报错信息。

仔细阅读之后,我们应该查看一下CMakeDownloadLog.txt。使用Notepad++或者其他软件打开CMakeDownloadLog.tx

通过查看CMakeDownloadLog.txt文件可以看出,是由于Cmake去下载相关的包没有下载下来。所以根据红框处的信息我们需要自行下载,方法:将链接输入到浏览器,然后就会自动下载。一些链接输入到浏览器之后,显示的是文本,需要另存为文本到本地,千万不要复制!!!

下载之后将这些包拷贝到.cache文件夹下,并且需要更改包的名字(cmake下载包之后将校验的hash码重命名到了包中),下图以ippcv包为例:

下载的包原名为:ippicv_2020_win_intel64_20191018_general.zip         

复制到CmakeDownloadLog.txt中的.cache文件夹下,并改名为:

879741a7946b814455eee6c6ffde2984-ippicv_2020_win_intel64_20191018_general.zip

根据CMakeDonloadLog.txt文件中的提示信息,将所有下载失败的安装包都下载下来,复制到对应的文件夹中,然后重新点击configure

此时可以发现,不再有报错信息了, 同时也可以查看CmakeDownLoadLog.txt,已经不报错了:

3.4 安装OpenCV-crontrib

在cmake的OPENCV_EXTRA_MODULES_PATH之中输入之前下载的OpenCV-contrib的路径,精确到modules,OPENCV_ENABLE_NONFREE一定要勾选上!

再次configure,不出意外的话,又看到一大堆报错信息,同样是由于有些安装包没有下载下来,再次根据CMakeDownloadLog.txt文件中的提示信息,将没有下载成功的安装包下载下来,并复制到对应的文件夹中,再次点击configure即可。

3.5 VS生成代码

找到build之后的OpenCV.sln文件,用visual studio2022打开。

右击models下面的opencv_world,点击属性,如下图所示

对链接器中的启用增量链接进行修改,选择

对CMakeTargets文件夹下的Install进行重新生成即可,如下图。这个时候要等上一段时间,可能是半个小时,也可能是好几个小时,主要看电脑性能。跑完之后出现如下错误不要慌,这个是不耽误使用的,这个报错是python导致的。

以上咱们的opencv就算是编译完成了。跑完Debug版之后建议也去跑个Release,这样两个环境下就都可以使用了。

4 环境配置

  • 先配置系统环境变量,Windows控制台搜索即可查询到。

把之前install产出的bin的包的路径填进去,然后重启电脑才会生效。 

  • 然后创建一个空的"控制台应用"项目,就叫OpenCV-test

  • 右键项目,更改属性。编辑VC++目录下的包含目录(其实就是英文版本的include path) ​​​​​,然后把install之后的include文件夹路径添加上去。注意,是install之后的include路径,不要填错成了其他的include路径

  • 然后我们编辑库目录(其实就是英文版的lib path),把install之后的lib目录输入进去(再次强调是install之后的lib目录
  •  链接器->附加依赖项->编辑,输入所有的xxxxx/install\x64\vc16\lib中 所有xxxd.lib文件名字

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

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

相关文章

智能指针+拷贝构造+vector容器+多态引起的bug

今天在调试一段代码的时候,VC编译提示: error C2280: “T485CommCtrlPara::T485CommCtrlPara(const T485CommCtrlPara &)”: 尝试引用已删除的函数 函数执行部分如下: 看意思是这个pComm485Pro已经消亡了,后续push_back到ve…

高速电路设计系列分享-信号链精度分析(中)

目录 概要 整体架构流程 技术名词解释 技术细节 1.直流无源误差 小结 概要 提示:这里可以添加技术概要 在任何设计中,信号链精度分析都可能是一项非常重要的任务,必须充分了解。之前, 我们讨论了在整个信号链累积起来并且最终会…

统一日志处理----AOP/面向切面编程

AOP Aspect Oriented Programing:面向切面编程 AOP是对OOP的补充,进一步提高编程的效率 AOP的常见使用场景有:权限检查、记录日志、事务管理等 如下图所示结构,每个模块都含有相同的系统需求,而这些需求和模块本身的功…

Flutter进阶-动画详解

目录 动画类别 一、隐式(全自动)动画 二、显式动画(手动控制) 三、其他动画(CustomPainter) 动画类别 Flutter 中有多种类型的动画: 隐式动画:通过更改部件属性自动触发的预定义动画,例如 …

什么是cookie

1、cookie是什么 Cookie,有时也用其复数形式Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存…

Python强类型编程

Python是一门强类型的动态类型语言,具体如下特性: 可以动态构造脚本执行、修改函数、对象类型结构、变量类型但不允许类型不匹配的操作 第一个例子体现动态性:用字符串直接执行代码,动态构建了一个函数并执行,甚至给…

力扣744.寻找比目标字母大的最小字符(java暴力查找法,二分查找法)

题目描述: 给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。 [外链…

岭回归(Ridge)不同alpha值对归回结果的影响

对于有些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这种矩阵称为“病态矩阵”。有些时候不正确的计算方法也会使一个正常的矩阵在运算中表现出病态。对于高斯消去法来说,如果主元(即对角线上的…

亚马逊测评:如何有效使用IP和养号设备环境

随着网络科技的崛起,越来越多的本土企业入驻亚马逊电子商务平台上,这导致了对产品评价需求的激增。然而,评价并非随意进行,它需要多方面的资源,并需要密切注意一些重要环节。以下是我分享给大家一些宝贵的知识&#xf…

如何实现敏捷交付中的自动化测试优化

在提及自动化测试的时候,很多人会把工具的使用等同于自动化测试。自动化测试应该是一个策略性的系统化工程,不只有自动化工具。自动化测试要发挥其频繁快速的质量反馈作用,还需要团队从文化和技术上去建设和学习。 提到敏捷交付,…

数据库监控与调优【十二】—— JOIN语句优化

JOIN语句优化-JOIN种类、算法与原理 JOIN的种类 笛卡尔连接(cross join) -- 举例:通过笛卡尔连接查询两张表的结果集和单查两张表的结果集对比 SELECT count( * ) FROM users a CROSS JOIN orders b; SELECT ( SELECT count( * ) FROM user…

SpringBoot + Vue前后端分离项目实战 || 四:用户管理功能实现

系列文章: SpringBoot Vue前后端分离项目实战 || 一:Vue前端设计 SpringBoot Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接 SpringBoot Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接 文章目录 前端…

微服务: sleuth和zipkin的用处与zipkin安装使用(下)

目录 0. 上篇传送门: 1. 前言简介 mq安装传送门: 微服务: 01-rabbitmq的应用场景及安装(docker) 1.1 Sleuth是一款分布式跟踪解决方案。 1.2 Zipkin是一个开源的分布式跟踪系统。 2. zipkin安装方式 2.1 windows下安装zipkin: 2.1.0 下载jar包位置 2.1.1 下载后,找…

数值计算例题整理

数值计算 一、误差的来源和分类二、有效数字第一个大题(非线性方程组的迭代法)第二个大题(LU分解)第三个大题(牛顿插值法)第四个大题(直线拟合) 一、误差的来源和分类 误差是描述数…

Git 原理和使用

Git 安装 Git是开放源代码的代码托管⼯具,最早是在Linux下开发的。开始也只能应⽤于Linux平台,后⾯慢慢的被移植到windows下,现在,Git可以在Linux、Unix、Mac和Windows这⼏⼤平台上正常运⾏了。 Linux-centos 安装git sudo yu…

8.3 PowerBI系列之DAX函数专题-矩阵Matrix中高亮显示最大最小值

需求 用颜色标量年度最大最小值 用颜色标示折线的最大值最小值 实现 在条件格式–规则–基于字段进行计算 度量值 is_max_min var displayed_data calculatetable( addcolumns( summarize(‘订单表’,‘产品表’[商品次级类别],‘订单表’[订单日…

arcgis栅格影像裁剪--shp

1、打开软件,导入数据,如下: 2、裁剪面形状如下,为shp文件: 3、在arctoolbox中找到"数据管理工具"--"栅格"--"栅格处理"--"裁剪"工具,如下: 4、打开裁…

(ESP32)报错-portTICK_RATE_MS‘ undeclared

(ESP32)报错-portTICK_RATE_MS undeclared 问题详情ESP- IDF未正确设置 问题详情 报错提示 portTICK_RATE_MS undeclared (first use in this function); did you mean portTICK_PERIOD_MS?具体情况 已经引用相关头文件,并且右键后可以大概…

leetcode 2462. Total Cost to Hire K Workers(雇用 K 名员工的总成本)

每次从 开头candidates个 和 末尾candidates个 工人中选择一个cost最小的。 如果有2个工人cost相同,就选index较小的。 每个工人的cost在数组costs里。 直到雇够k个工人。 问雇k个工人需要多少cost. 思路: 可以考虑用一个优先队列,按cost排…

2023开放原子全球开源峰会——一场开发者的盛宴

文章目录 上午场下午场开发者之夜 #“2023我在开源峰会”特别征文# 2023开放原子全球开源峰会,6月11日-13日在北京盛大召开,开幕第一天正好是周六,没什么事情,一大早就过去了,早晨大概7点出发,公交、地铁一…