【VS2019+OpenCV4.5.1+OpenCV_contrib4.5.1安装+配置保姆式教程】

2023-11-08 13:59

本文主要是介绍【VS2019+OpenCV4.5.1+OpenCV_contrib4.5.1安装+配置保姆式教程】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、搭建环境
  • 二、OpenCV_contrib4.5.1安装步骤(正文来了,敲黑板!)
    • 1.OpenCV_contrib拓展包编译
    • 2.Visual Studio2019编译
    • 3.环境配置
      • 3.1 系统环境配置
      • 3.2 Visual Studio项目环境配置
      • 3.3 测试
  • 三、Reference


前言

背景:初入OpenCV的世界,没人指导没人教,我一开始就直接下了OpenCV4.5.1(当时还没了解3和4的区别,只知道技术的东西肯定新有新的优势,虽然也会伴随着更多的未知,但还是毅然下了4),配合着原本装好的VS2019使用。这几天需要用到SIFT特征点检测的一些函数需要contrib拓展包的一些头文件,故在已经装好VS2019+OpenCV4.5.1的基础上,继续安装OpenCV_contrib4.5.1拓展包,因为4.5.1版本又是最新的,所以很多东西都是自己实践亲测出来的,真就每次装个东西,各位前辈们碰到的问题都全部集中在我身上,这就是all in吗?爱了爱了。
时长:历时3天(当然不是完完全全的72小时,但至少每天10+小时堆在这上面)。
吐槽:我看到有些帖子写:VS2015、VS2019装OpenCV_contrib不稳定,最后重装VS2017才成功安装和配置contrib拓展包。拜托,都什么时代了,还信这些,我就一愣头青的,非就用着最新的版本照样安装成功,时代在进步,当然我们也要努力突破啊(小白内心独白自述,dalao们当笑话看看就好哈哈哈哈)。


一、搭建环境

操作系统:Windows 10
软件:Visual Studio 2019、OpenCV4.5.1、OpenCV_contrib4.5.1拓展包、Cmake3.19.3.

注释:OpenCV和contrib拓展包的版本一定要一致!!!上述各安装包有很多博主前辈都有教在哪里找,也有教怎么安装,我就不赘述了。
比较难找的就只有contrib4.5.1拓展包,实在找不到的话可以去我发布的资源上下载,找资源不易,请多多包涵。

二、OpenCV_contrib4.5.1安装步骤(正文来了,敲黑板!)

1.OpenCV_contrib拓展包编译

在这里插入图片描述

第一栏Where is the source code是指OpenCV4.5.1解压后得到的source文件的路径;
第二栏where to build the binaries是指编译后输出文件的路径,我是直接在opencv的同个大文件夹下创了一个名为“contrib_new”的文件夹,此点看个人喜好和此时心情。

这两个路径设置好之后就可以点击【Configure】按钮,选择将源码编译成与VS版本相应的工程文件,如下图所示。
在这里插入图片描述
第一栏:对应的VS版本;
第二栏:编译后工程文件适用的操作平台版本,我电脑是64位的,所以我选择的是编译成是64位的OpenCV_contrib工程文件;
第三栏:跳过;
选项:选择本地编译器“Use default native compilers”;
最后Finish走起,几分钟后即可完成编译。
:编译前,请打开你的vpn!而且编译对网络要求很高,如果网线不行,请开手机热点,换着试。
有些东西就是玄学,我以前刚玩ROS的时候各位大神也是这么教的。
在这里插入图片描述

如果你足够幸运,只有上面那一栏报错,下栏毫无红色字体错误,那恭喜你,直接按我的文字配置上栏的即可。然而大部分人可能会像我一样,并不是那么幸运,结果就是这样,上下都红:

在这里插入图片描述

行吧,我们先一栏一栏来解决问题(ps:即使上下栏都有错误,都需要按如下步骤操作;仅有上栏错误的只需要按“上栏操作”进行):
上栏操作:在上栏界面中的变量中找到“BUILD_opencv_world”和“OPENCV_ENABLE_NONFREE”两个变量,在变量后面的方框中勾选,即打上“√”(含义可自行百度,但没必要)。随后,找到“OPENCV_EXTRA_MODULES_PATH”变量,在此变量后面加上【opencv_contrib4.5.1】文件夹里的【modules文件夹】的路径。最后再次点击【Configure】,直到上栏所有的红色变量变成白色(来来来,保姆上图!)。
在这里插入图片描述
在这里插入图片描述

下栏操作:首先,我们按照下栏找到编译日志的路径,点开CMakeDownloadLog.txt,看你所缺失的文件,也就是下载失败的文件,你按着路径进去看,会看到你需要下载的那几个文件目前在文件夹里的都是0k,即失效文件,我们要做的就是手动下载正确的文件来替换掉他们。
来了来了,又敲重点了,我第一次打开这个时有一共缺了14个文件,好家伙,我是重新编译了好几次后才变得这么少的,为什么又编译了好几次呢,这就是我走过的坑了,希望大家看完不要再走我的老路,节约时间,献身科研
在这里插入图片描述

正文开始CMakeDownloadLog.txt文件打开后可能很多人不知道怎么看,我拿一个缺失文件的描述来举例解释一下吧。

#do_copy "boostdesc_bgm.i" "0ea90e7a8f3f7876d450e4149c97c74f" 
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i" 
"D:/OpenCV/opencv/contrib_new/downloads/xfeatures2d"
#missing "D:/OpenCV/opencv/contrib_new/downloads/xfeatures2d/boostdesc_bgm.i"
#check_md5 "D:/OpenCV/opencv/sources/.cache/xfeatures2d/boostdesc/0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i"
#copy "D:/OpenCV/opencv/contrib_new/downloads/xfeatures2d/boostdesc_bgm.i" "D:/OpenCV/opencv/sources/.cache/xfeatures2d/boostdesc/0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i"

你的缺失文件是:boostdesc_bgm.i,其MD5值是:0ea90e7a8f3f7876d450e4149c97c74f,你需要做的是把这个文件下载回来,并改成相应的文件名放到指定的文件路径下。
下载的网址是:https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i
下载后文件要改成的名字是:MD5值+“-”+文件名,即例子中最后一行的:0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i
存放文件的路径是:D:/OpenCV/opencv/sources/.cache/xfeatures2d/boostdesc

按着这个方法,去下载所缺失的文件,并放到相应的路径替换掉他们。
上面这个只是例子,不是MD5值全部一模一样按着这个改,是教你怎么看!!!

注意(请认真看,这也是为什么编译了好几次的原因):

  1. 下载这些文件时,请打开你的VPN!打开你的VPN!打开你的VPN!如果打开了vpn还是打不开网页,请你换个vpn的服务器或者换个时间段,或者换个网络再打开这个网页(不要质疑我,我就是第一次打打不开,疯狂质疑各位dalao让我在浏览器打开这些网址的做法,走了很多弯路)。
  2. 后缀为.cmake.i的文件在浏览器中打开会显示出源码,请直接在网页上找到另存为的选项,将这些文件直接保存成对应的文件格式,不然使用不了。即,不要将代码复制下来,保存在新建的.txt文件中,再改名,这样没用!没用!没用!
  3. 全部替换完后,记得打开VPN,再回到CMake中,点击【Configure】。

如果实在搞不定这些文件,也可以在我过两天整理后上传的资源中下载,寻找和整理不易,勿喷(如果你搞得定,你也不会找资源了哈哈哈哈哈,我就是那个没钱下载只能疯狂自己探索的人哈哈哈哈哈哈哈)。

待下栏中出现Configuring done,且上下两栏都没有红色的错误文字提示时,恭喜你,你度过了最艰难的一步了。随后即可点击【Generate】,等待下栏出现Generating done,就基本完成了对OpenCV_contrib拓展包的编译,编译完之后文件夹会变得很大,小事情,不要慌,很大才说明编译成功了,很小的话说明有问题(此处无图,因为太激动了,没保存)。


我当初缺失的文件:
在这里插入图片描述
我一开始一共缺了16个,所以不要放弃,加油吧。
注:如果找不到可以到我发布的资源下载,鼓励自己找。

2.Visual Studio2019编译

进入刚刚编译好的.sln文件,可以从【Generate】后CMake界面进入,点击Generate旁边的【Open Project】直接进入,也可以从刚刚你创建用于存放编译项目工程文件的文件夹中找到.sln文件直接进入。
在这里插入图片描述
进入VS界面后,选择生成->批生成,勾选如下四个项目,点击【生成】。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

生成的时间会比较长,如果你上述所有步骤都没错的话,生成后的结果会是全都成功,有些步骤可能在CMake中【Configure】和
【Generate】都通过并没有警告字样,但有错误的话,在VS2019中生成是会有错误的(注:生成的数量因人而异)。

生成的数量因人而异

3.环境配置

注:以下添加文件的路径都是你刚刚自己创建用于存放编译项目工程文件的文件夹里文件,我的是在D:\OpenCV\opencv\contrib_new,“contrib_new”是我创建用于存放编译项目工程文件的文件夹
。环境配置的过程与配置OpenCV的过程很像。

3.1 系统环境配置

在“此电脑”-“属性”-“高级系统设置”-“高级”-“环境变量”-“系统变量”-“Path”,添加“...\install\x64\vc14\bin”,我的是D:\OpenCV\opencv\contrib_new\install\x64\vc16\bin。然后重启VS。
(注:我看有些博主是选择改“用户变量”,这个我是直接把整个系统变量的PATH配置了,一劳永逸。)

在这里插入图片描述

3.2 Visual Studio项目环境配置

在VS中新建一个空项目,进入后,右击,打开该项目的【属性】。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

① 在该属性页中,将“配置”和“平台”分别改为“所有配置”和“所有平台”;
② 在“VC++目录”中:
③ 在包含目录中加入:

...\install\include
...\install\include\opencv2

我自己的路径是:
D:\OpenCV\opencv\contrib_new\install\include D:\OpenCV\opencv\contrib_new\install\include\opencv2

在这里插入图片描述

④ 在库目录中加入:

...\install\x64\vc16\lib

我的路径是:
D:\OpenCV\opencv\contrib_new\install\x64\vc16\lib

在这里插入图片描述
⑤ 将“配置”改成“Debug”模式;
⑥ 选择“链接器”-“输入”
⑦ 在“附加依赖性”中加入:

opencv_world451d.lib

在这里插入图片描述

在这里插入图片描述
⑧ 同理,配置“Release”模式,在“附加依赖性”中加入:

opencv_world451.lib

在这里插入图片描述

在这里插入图片描述
注:可能很多博主在附加依赖项这一步的时候加了很多依赖,实际上我加了很多依赖后反而用不了,不加更能够使用。

附一堆附加依赖项
Debug模式:

opencv_aruco451d.lib
opencv_bgsegm451d.lib
opencv_bioinspired451d.lib
opencv_calib3d451d.lib
opencv_ccalib451d.lib
opencv_core451d.lib
opencv_datasets451d.lib
opencv_dnn451d.lib
opencv_dnn_objdetect451d.lib
opencv_dpm451d.lib
opencv_face451d.lib
opencv_features2d451d.lib
opencv_flann451d.lib
opencv_fuzzy451d.lib
opencv_gapi451d.lib
opencv_hfs451d.lib
opencv_highgui451d.lib
opencv_imgcodecs451d.lib
opencv_imgproc451d.lib
opencv_img_hash451d.lib
opencv_line_descriptor451d.lib
opencv_ml451d.lib
opencv_objdetect451d.lib
opencv_optflow451d.lib
opencv_phase_unwrapping451d.lib
opencv_photo451d.lib
opencv_plot451d.lib
opencv_quality451d.lib
opencv_reg451d.lib
opencv_rgbd451d.lib
opencv_saliency451d.lib
opencv_shape451d.lib
opencv_stereo451d.lib
opencv_stitching451d.lib
opencv_structured_light451d.lib
opencv_superres451d.lib
opencv_surface_matching451d.lib
opencv_text451d.lib
opencv_tracking451d.lib
opencv_video451d.lib
opencv_videoio451d.lib
opencv_videostab451d.lib
opencv_xfeatures2d451d.lib
opencv_ximgproc451d.lib
opencv_xobjdetect451d.lib
opencv_xphoto451d.lib

Release模式:

opencv_aruco451.lib
opencv_bgsegm451.lib
opencv_bioinspired451.lib
opencv_calib3d451.lib
opencv_ccalib451.lib
opencv_core451.lib
opencv_datasets451.lib
opencv_dnn451.lib
opencv_dnn_objdetect451.lib
opencv_dpm451.lib
opencv_face451.lib
opencv_features2d451.lib
opencv_flann451.lib
opencv_fuzzy451.lib
opencv_gapi451.lib
opencv_hfs451.lib
opencv_highgui451.lib
opencv_imgcodecs451.lib
opencv_imgproc451.lib
opencv_img_hash451.lib
opencv_line_descriptor451.lib
opencv_ml451.lib
opencv_objdetect451.lib
opencv_optflow451.lib
opencv_phase_unwrapping451.lib
opencv_photo451.lib
opencv_plot451.lib
opencv_quality451.lib
opencv_reg451.lib
opencv_rgbd451.lib
opencv_saliency451.lib
opencv_shape451.lib
opencv_stereo451.lib
opencv_stitching451.lib
opencv_structured_light451.lib
opencv_superres451.lib
opencv_surface_matching451.lib
opencv_text451.lib
opencv_tracking451.lib
opencv_video451.lib
opencv_videoio451.lib
opencv_videostab451.lib
opencv_xfeatures2d451.lib
opencv_ximgproc451.lib
opencv_xobjdetect451.lib
opencv_xphoto451.lib

3.3 测试

测试代码什么的我是不会给的了,自己写!
其实哪里需要测试什么,你在编程的时候试一试能不能找到xfeature2d.hpp头文件即可,如果配置失败,你这个头文件编译器是找不到的,如图即成功。
在这里插入图片描述
如果你加入了一堆附加依赖项后,反而最后生成解决方案找不到.hpp文件时,你不妨删掉试试?版本越高或许并不需要那么多花里胡哨的东西。

这是我调用SIFT测试的图(嗯,原图我也是偷来的,应该是安装OpenCV时偷哪位博主的,忘了哈哈哈哈哈):
在这里插入图片描述

祝君成功,献身科研!!!


三、Reference

https://blog.csdn.net/GIS_feifei/article/details/102531891
https://blog.csdn.net/weijifen000/article/details/93377143
https://blog.csdn.net/weixin_42331201/article/details/111560667
《OpenCV4 快速入门》人民邮电出版社出版

这篇关于【VS2019+OpenCV4.5.1+OpenCV_contrib4.5.1安装+配置保姆式教程】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/370317

相关文章

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

mac安装redis全过程

《mac安装redis全过程》文章内容主要介绍了如何从官网下载指定版本的Redis,以及如何在自定义目录下安装和启动Redis,还提到了如何修改Redis的密码和配置文件,以及使用RedisInsig... 目录MAC安装Redis安装启动redis 配置redis 常用命令总结mac安装redis官网下

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众