Win10+Vs+CMake安装OpenCV+contrib
文章目录
- 0.前言
- 1.准备工作
- 1.1.下载Vs
- 1.2.下载CMake
- 1.3.下载OpenCV和opencv-contrib
- 2.CMake编译Opencv和contrib源码(重点)
- 2.1.初次config
- 2.2.再次config
- 2.3.解决文件下载失败报错
- 2.4.解决找不到python2的可执行文件报错
- 2.5.生成工程
- 3.使用Vs打开工程编译
- 3.1.报错1:没有那个文件或目录
- 3.2.报错2:编译时头文件不对
- 3.3.报错3:LNK1104 无法打开文件“python37_d.lib”
- 3.4.编译工程
- 3.5.新建工程测试
- 4.遗留问题
- 5.资源分享(仅针对opencv4.5.1版本)
0.前言
由于需要使用Opencv中的Aruco码进行位姿估计,而Aruco的功能在opencv-contrib模块中。而直接在官网下载的编译好的Opencv(即含有build文件夹)不包含contrib模块,因此如果想使用contrib模块,必须使用源码再次进行编译安装。此外,如果之前已经安装了opencv,想追加安装contrib模块,也是这种操作,因为cintrib必须和opencv一起编译,并不能单独编译使用。
我在经历了多次失败后成功从源码编译安装了Opencv+contrib,在此做一个记录。主要的参考是B站两个Up主的视频( 参考视频1 参考视频2 ),在此表示感谢。
1.准备工作
1.1.下载Vs
参考
此处我使用的是vs2017,下载时的选项如下(图片使用的是网图,其中安装的是vs2019):
1.2.下载CMake
参考
1.3.下载OpenCV和opencv-contrib
opencv下载
下载地址:https://opencv.org/releases/
这里到官网下载exe文件和Source文件均可,exe文件双击后会解压文件到某个位置,解压后的文件内容如下:
opencv_contrib下载
下载地址:https://github.com/opencv/opencv_contrib/releases
解压opencv_contrib压缩包到opencv目录下
务必注意:Opencv的版本和contrib的版本必须要一致!
2.CMake编译Opencv和contrib源码(重点)
参考视频1 参考视频2 参考博客1
2.1.初次config
在opencv的目录下新建一个文件夹,用于存放一会用cmake编译生成的vs工程
打开cmake,选择源码路径和编译的工程存放路径
- 点击config,配置编译工具
- 开始编译,等待。这里一般会出现网络问题,即文件下载不成功:
2.2.再次config
先不管上面的报错信息,继续进行下一步:
等待config完成,同样会报错。config一次可能上面的选项中还是会有红色,如下图所示。此时再次点击config,直到红色消失:
2.3.解决文件下载失败报错
- 打开
OpenCV4.5.1/new_build/CMakeDownloadLog.txt
文件,查看报错信息
进入到CMakeDownloadLog.txt文件中所指示的文件存储位置可以发现,很多文件都的大小都是0Kb,可见文件并没有完整下载下来,因此报了上面的错误。在这里我们先解决4个文件下载失败的问题,分别是
- IPPICV 文件:
- FFMPEG 文件
- FFMPEG 文件
以上三个文件都是可以下载的,根据CMakeDownloadLog.txt文件中的网址,用浏览器输入网址把这三个文件下载下来,然后复制到指定的位置,再将文件名改为“md5校验码-文件名”的形式即可。
- ffmpeg_version.cmake文件:(这里我在cmake中下载成功了,之前没有下载成功,)
如果这个文件在Cmake中也没有下载成功的话,输入网址进去会发现它不能下载,而是直接显示文件的内容。直接把网页中显示的文件内容复制,然后到文件的存储位置用记事本打开文件,粘贴进去即可。
剩下的
.i
文件看cmake的报错可以发现,还剩下
xfeatures2d/boostdesc
文件夹下的文件下载失败,如图所示:
还有xfeatures2d/vgg
文件夹下的文件下载失败,如图所示:
同样,这些文件和ffmpeg_version.cmake文件一样,输入网址进去也不能下载,网页会显示文件内容,如图所示。此时直接将网页内容复制然后粘贴到文件中去,或者右键另存为txt下载即可。
但是经过我的测试,把这些.i文件按照上面那4个文件的做法,复制到指定位置并且重命名后,再进入到Cmake中编译,还是会下载文件,并且这些重命名后的文件全部又变成了0Kb。原因不明,所以这里先不更改复制这些文件到指定位置。
正确的操作是:输入这些文件的网址,然后右键另存为,这些文件在后面会使用到,文件名会自动生成,不必更改。
如下图,是我得到的所有.i文件:
2.4.解决找不到python2的可执行文件报错
CMake Warning at cmake/OpenCVDetectPython.cmake:81 (message):CMake's 'find_host_package(PythonInterp 2.7)' found wrong Python version:PYTHON_EXECUTABLE=C:/Users/xx/AppData/Local/Programs/Python/Python38/python.exePYTHON_VERSION_STRING=3.8.2Consider providing the 'PYTHON2_EXECUTABLE' variable via CMake command lineor environment variables........
报错的内容如上,大致的意思就是cmakelists中用到了python2.7,而这个python2.7是使用一个叫PYTHON_EXECUTABLE
的环境变量指向的,但是因为没定义这个环境变量,它直接指向了默认的python版本,也就是python3的版本。所以解决的办法就是把添加这个环境变量,并将其内容更改为python2.7的可执行文件。如图所示。具体操作见: 参考
2.5.生成工程
经过以上步骤之后,除了.i文件的下载问题未解决之外,其他的问题已经都解决了。这时候再次点击config,应该会发现输出的报错中只剩.i文件下载失败的错误了。这里不管他,直接点击generate生成工程。
3.使用Vs打开工程编译
参考
注意:倘若直接编译的话,会产生如下3.1、3.2和3.3的错误。因为编译的时间非常长,所以这里就未雨绸缪,先根据原因消除错误再进行编译。
3.1.报错1:没有那个文件或目录
问题:编译OpenCV提示opencv_contrib缺少boostdesc_bgm.i等文件。
解决:添加.i文件到指定目录。将在上一节中下载的.i文件,全部复制到E:\OpenCV4.5.1\opencv_contrib-4.5.1\modules\xfeatures2d\src
路径下即可。如图所示:
如果不进行这一步的操作的话,最后编译工程会产生如下错误,可以看到其中就有提示找不到.i文件。
3.2.报错2:编译时头文件不对
问题:
fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件或目录
#include "features2d/test/test_detectors_regression.impl.hpp
解决:头文件include地址不对,解决方法如下:
将
sources/modules/features2d/test/
文件下的以下5个文件:(注意:该目录下有6个.hpp文件,只拷贝下面五个就可以,不需要拷贝
test_precomp.hpp
文件)
test_descriptors_invariance.impl.hpp
test_descriptors_regression.impl.hpp
test_detectors_invariance.impl.hpp
test_detectors_regression.impl.hpp
test_invariance_utils.hpp
拷贝到opencv_contrib-4.1.0/modules/xfeatures2d/test/
文件下。
同时,将
opencv_contrib-4.1.0/modules/xfeatures2d/test/test_features2d.cpp
文件里的#include "features2d/test/test_detectors_regression.impl.hpp" #include "features2d/test/test_descriptors_regression.impl.hpp"
改成:
#include "test_detectors_regression.impl.hpp" #include "test_descriptors_regression.impl.hpp"
将
opencv_contrib-4.1.0/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp
文件里的#include "features2d/test/test_detectors_invariance.impl.hpp" #include "features2d/test/test_descriptors_invariance.impl.hpp"
改成:
#include "test_detectors_invariance.impl.hpp" #include "test_descriptors_invariance.impl.hpp"
3.3.报错3:LNK1104 无法打开文件“python37_d.lib”
参考
问题:编译OpenCV提示LNK1104 无法打开文件“python37_d.lib”,其实原因就是缺少了python的debug版本库文件,因为一般在安装python的时候都是没安装debug模式。
解决:在解决这个问题之前,请先确保你安装了python的debug版本,如果没有,可以修改已经安装的python,如下图所示勾选最后一项,然后install
然后,解决方法很简单,给如下图所示的项目添加python37_d.lib所在的路径即可。
以下这两个操作必不可少!
1、将python37_d.lib所在文件夹的路径添加到库目录里面
2、然后在附加依赖项中添加python37_d.lib,就是刚才找不到的这个库文件的名字。然后保存即可
3.4.编译工程
- 进入cmake的编译目录,即一开始新建的new_build目录,点击Opencv.sln用vs打开。
批生成解决方案
勾选ALL_BUILD和INSTALL生成解决方案
经过漫长的编译,终于成功了!
3.5.新建工程测试
添加环境变量
新建空项目,并添加测试源文件
此时添加源文件后,会发现报错找不到头文件等等,这是因为还没有配置项目属性。
配置项目属性
显示属性管理器
为Debug模式新建属性表
编辑属性表
添加include路径、library路径
添加链接器链接的lib路径
找到上一步添加的库目录的路径,即
E:\OpenCV4.5.1\new_build\install\x64\vc15\lib
,由于我们之前生成了debug和release两种类型的库,所以可以发现该路径下的库分为release用的*.lib库和debug用的 *d.lib库。由于我们现在配置的是debug模式下的属性表,所以需要提取所有的 *d.lib文件。在该目录下新建一个getDebugLibName.txt文件,内容改为
DIR *d.lib /B >debugLibName.txt
意思就是提取当前目录下的所有文件名以d.lib结尾的文件,然后将文件名输出到debugLibName.txt文件中。
保存后将getDebugLibName.txt文件重命名为getDebugLibName.bat文件,即编程windows下的批处理文件。然后双击这个文件运行,就会得到一个debugLibName.txt文件。
复制该文件里的所有内容,添加到链接器的input里面,然后保存属性表即可。
运行项目,发现报错找不到d.dll文件
这里是因为我们之前添加的Opencv的系统环境变量还没生效,需要重启电脑让环境变量生效。此时重启即可。
再次运行测试项目
注意把测试下项目改成Debug下的x64模式,然后点击运行。
项目成功运行,把生成的Aruco码显示了出来,说明Opencv和contrib模块都是正常的。 大功告成!
4.遗留问题
在上面添加链接器的库文件的时候,有很多库文件,我是使用了一个批处理文件得到了这些文件的名称,然后复制到了属性表中,这样操作比较麻烦。
使用cmake进行编译的时候,有一个BUILD_opencv_world
选项,如下图所示。
如果选择了这个选项,那么最后使用vs编译生成.lib库文件的时候就会生成一个总的opencv_world451d.lib
文件,如下图所示。
但是,我之前勾选了这个选项,在使用vs编译的时候,会产生很多错误,提示找不到opencv_world451d.lib
文件。而不勾选这个选项就不会报错,所以上面的做法中我没有勾选。由于最后这两种情况的使用效果是一样的,并且编译一次太耗时间,因此我就没再测试。
5.资源分享(仅针对opencv4.5.1版本)
- cmake下载失败的文件
链接:https://pan.baidu.com/s/1ImP_ut0T45eiaaayNbkwpQ 提取码:mn5m
- 编译好的install文件夹,仅使用这个文件夹下的文件就可以进行opencv的开发了。
链接: https://pan.baidu.com/s/1aQvsrYty6vjCYPd-HrxLUQ 提取码:o13u
- 整个opencv4.5.1和contrib文件夹,也就是我上面的教程中生成的所有文件
链接:https://pan.baidu.com/s/1bL5d25TH-SxENieST6MEFg 提取码:h0s6
Win10+Vs+CMake安装OpenCV+contrib相关推荐
- python卸载+安装opencv+contrib库
一.卸载 1.在Anaconda3目录中找到site-packages文件夹 我的路径是: 2.查看已安装的opencv版本 我现在的版本是4.5.4.60,之前是4.5.5.64,下述图片及过程是卸 ...
- 树莓派安装Opencv+Contrib和 QT 详细教程
文章目录 前言 一.卸载OpenCV或重装系统 1.卸载OpenCV 2.重装系统 ①. 下载raspbian ②. 安装raspbian ③. 配置树莓派WiFi和SSH ④. 树莓派VNC设置 ⑤ ...
- win10 使用vcpkg 安装 opencv 教程
本人的开发环境如下:window10+64位操作系统+Microsoft Visual Studio 2017.本次C++安装OpenCV主要通过包管理器 vcpkg 实现(类似Python中的Pip ...
- win10下pycharm安装opencv tensorflow anaconda
https://www.cnblogs.com/csu-lmw/p/9356719.html
- Ubuntu 20.04 下安装 OpenCV 3.4.11 并测试使用
目录 0 操作环境 1 什么是 Opencv 2 安装 Opencv 2.1 下载 Opencv 2.2 Opencv 的配置环境 3 Opencv 对图片进行处理 3.1 代码文件创建 3.2 编译 ...
- OpenCV contrib 等的配置与vscode自动补全功能
系统:Ubuntu18.04 版本:OpenCV+contrib 4.5.1 已经配置好的:https://pan.baidu.com/s/1Dl3ePy6dG5AQca37I7FFeg zlaf 安 ...
- 在Ubuntu18.04上安装opencv 3.4.1
对于安装opencv有的人一次就成功,而有人安装了N多次才成功.我就是那个安装了N多次的人,每次遇到了很多安装错误,只能通过到网上搜教程资料,解决方法:通过一次次的试错,最终完成了安装.再此提醒第一次 ...
- 在ubuntu20.04环境下安装opencv教程并测试
目录 一.安装opencv 二 配置环境 三 实例 四 总结 五参考文献 一.安装opencv 1下载 在虚拟机内打开浏览器输入网址Release OpenCV 3.4.15 · opencv/ope ...
- opencv opencv contrib
opencv contrib https://github.com/opencv/opencv_contrib/releases/tag/4.5.5 opencv https://github.com ...
最新文章
- 常用地理数据平台及环境数据资源 (GIS)
- 10 个适合网店使用的免费 Bootstrap 模板
- Android APK 签名文件MANIFEST.MF、CERT.SF、CERT.RSA分析
- 《徐徐道来话Java》:PriorityQueue和最小堆
- 两相电机倒顺开关的接法是什么?
- 支持IE,Firefox的日历控件
- Uber柳甄:Uber中国独立核算 谋求国内A股上市
- Linux中KVM虚拟机是什么
- 我理解的17种C#写的Hello World程序
- 中富之命能有多少钱_算命中富 算命的说我是中富命,谁可以帮忙解释下
- hxxp://www.hao923.com.cn/劫持浏览器
- 冷库设计安装前有哪些检查工作
- Oracle 19c遇到ORA-XXXX:????的问题的解决方案
- python 画图自定义x轴刻度值
- Word及Autocad中中文字号与字体大小的关系
- (十二)幸福之家 - 1
- yolov5s-5.0网络模型结构图
- 在Unity中模仿游戏《江南百景图》中物体的出现效果
- 模拟开关和数字开关的区别
- html 输入框键盘遮挡,解决输入框被键盘挡住的问题