Windows下编译OpenCV+opencv_contrib
文章目录
- 前言
- 一、写在前面重要的事
- 二、正文
- 1.安装步骤
- 2.编译及配置
- 总结
前言
在学习OpenCV特征检测与匹配时,因为OpenCV3.x版本将SIFT、SURF、ORB算子等的源代码从官方发行的基础版移除,转移到了opencv_contrib扩展库中的xfeatures2d中。想要使用这些算法需要重新下载编译扩展库。网上资料五花八门,但是在却没有一个有完整流程的资料。于是乎,就有了这边文章。一是为了让自己更加熟悉+记录学习,二也是希望能为后来人提供些便利。
一、写在前面重要的事
本篇文章开发环境是Visual Studio,编译使用的是CMAKE,各种版本号如下:
主机系统:Win10 x64
Visual Studio:2019(VS16)
OpenCV:3.4.11
opencv_contrib:3.4.11(这个版本需要和OpenCV版本一致)
CMAKE:3.21.3
首先要做的是把各种需要的东西下载好,以下是下载链接(还是建议各种去各个官网下载)。
Visual Studio:
免费的开发人员软件和服务 - Visual Studio免费产品/服务: Visual Studio Community、Visual Studio Code、VSTS 和 Dev Essentials。https://visualstudio.microsoft.com/zh-hans/free-developer-offers/
OpenCV:
Releases - OpenCVhttps://opencv.org/releases/
PS:不建议选择最新版本,懂的都懂。
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_contrib
PS:还是那句话,需要和OpenCV版本一致。
CMAKE:
Download | CMake
https://cmake.org/download/二、正文
1.安装步骤
也许大概这东西其实没什么步骤。
OpenCV和opencv_contrib的安装过程实际上就是解压过程,建议解压在除C盘外的盘,解压完成后得到(自己改了文件名):
Visual Stuio和CMAKE就一路next的就完了。安装完大概就是这样。
2.编译及配置
打开CMAKE,填写相关参数,包括:OpenCV源码目录和OpenCV.sln工程的导出目录
添加完扩展包路径后,勾选:
BUILD_opencv_world(为了避免配置属性表时一大堆的依赖项)
BUILD_EXAMPLES(编译opencv自带的程序案例,可不选)
OPENCV_ENABLE_NONFREE(我们的目的)
然后再次点击configure进行编译,注意下面红框部分,都看一遍,不爆红的就没问题了,然后点击Generate就欧克了。
不爆红的话Generate以后就like this。
不过大概率是会爆的,会出现类似这种报错。
这些错误一般都是因为下载文件失败导致的,so我们换个网络下载,一直下载失败就手动.jpg。
关于错误信息可以D:\OpenCV\cmake_contrib_opencv(输出目录)\CMakeDownloadLog.txt中查看,打开可以看到以下内容。不同版的OpenCV丢失的文件会有不同。
#use_cache "D:/opencv/opencv346/sources/.cache"
#do_copy "opencv_ffmpeg.dll""41b81bb9a50cabd4bea385f7b50a069a" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fe71c0ad807fdc33c2178e48e488f1e9b177c39a/ffmpeg/opencv_ffmpeg.dll""D:/opencv/opencv346/contrib_build/3rdparty/ffmpeg"
这里的意思是说将 opencv_ffmpeg.dll(它的md5签名是 41b81bb9a50cabd4bea385f7b50a069a,下载地址是 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fe71c0ad807fdc33c2178e48e488f1e9b177c39a/ffmpeg/opencv_ffmpeg.dll" )从 "D:/opencv/opencv346/sources/.cache" 拷贝到 "D:/opencv/opencv346/contrib_build/3rdparty/ffmpeg"目录下。#missing "D:/opencv/opencv346/contrib_build/3rdparty/ffmpeg/opencv_ffmpeg.dll"
#check_md5 "D:/opencv/opencv346/sources/.cache/ffmpeg/41b81bb9a50cabd4bea385f7b50a069a-opencv_ffmpeg.dll"
#mismatch_md5 "D:/opencv/opencv346/sources/.cache/ffmpeg/41b81bb9a50cabd4bea385f7b50a069a-opencv_ffmpeg.dll" "d41d8cd98f00b204e9800998ecf8427e"
#delete "D:/opencv/opencv346/sources/.cache/ffmpeg/41b81bb9a50cabd4bea385f7b50a069a-opencv_ffmpeg.dll"
意思是目标目录下没有此文件#cmake_download "D:/opencv/opencv346/sources/.cache/ffmpeg/41b81bb9a50cabd4bea385f7b50a069a-opencv_ffmpeg.dll"
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/fe71c0ad807fdc33c2178e48e488f1e9b177c39a/ffmpeg/opencv_ffmpeg.dll"
意思是准备cmake下载此文件到源代码路径 /.cache/ffmpeg/,并命名为"md5-文件名"# timeout on name lookup is not supported
# Trying 151.101.228.133:443...
# TCP_NODELAY set
# Connected to raw.githubusercontent.com (151.101.228.133) port 443 (#0)
# schannel: ALPN, offering http/1.1
# schannel: failed to receive handshake, SSL/TLS connection failed
# Closing connection 0
# schannel: shutting down SSL/TLS connection with raw.githubusercontent.com port 443
# Send failure: Connection was reset
# schannel: failed to send close msg: Failed sending data to the peer (bytes written: -1)
#
意思是连接到服务器超时失败
cmake_download后面的就是下载失败的文件,下载的网址就在后面。然后这些下载失败的就需要我们自己下载了,推荐一个代理下载网站(自己去官网下也可以)。
GitHub Proxy 代理加速https://ghproxy.com/注意在代理网站下载后打开是网页格式,就像下面这样,需要另存为文件。
文件名有两种选择:
1、重命名为md5-文件名,然后放在check_md5后面显示的文件夹内;
2、直接以文件命名,然后放在目标路径下(不用重命名)
等把所有文件全部下载以后重新configure进行编译,还有爆红就重复流程,一直到不爆红,然后点击Generate。到这编译就完成了。
打开编译以后的文件夹,找到OpenCV.sln工程文件,打开它。
照上面流程来算上例子,应该是490个项目,因为流程没有什么太大坑就懒得截了,借用了别的博主的图片。
用VS 2019打开OpenCV.sln工程,在解决方案中可以查看工程目录:
编译生成debug版本的库,记得在此之前要选择编译的平台信息,这就是编译生成debug版本和release版本的区别,也可以选择release,因为自己的工程可能要用到相应的动态链接库
在解决方案中选中工程,右键选择重新生成解决方案
找到CMakeTargets中的INSTALL,然后右键选择“仅限于项目”-->“仅生成INSTALL
然后,在工程目录下的install目录中,可以看到生成了一堆文件
然后配置环境变量,把刚生成的****\install\x64\vc16\bin作为环境变量加入(如果之前有OpenCV务必替换它),配置完环境变量最好注销一下。
最后配置属性表,把新的库文件和依赖项配置到项目属性表里。
VC++目录-->包含目录,添加:
D:\OpenCV\cmake_contrib_opencv\install\include
D:\OpenCV\cmake_contrib_opencv\install\include\opencv
D:\OpenCV\cmake_contrib_opencv\install\include\opencv2
VC++目录-->库目录,添加:
D:\OpenCV\cmake_contrib_opencv\install\x64\vc16\lib链接器-->输入-->附加依赖项,添加:
opencv_img_hash3411d.lib
opencv_world3411d.lib
这里说一句,之前如果没有勾选BUILD_opencv_world的话lib文件会有很多,不过也没有关系,把所有lib文件全部添加进去也是没有问题的。
到这就over了,如果没有出现其他问题就可以使用了。
总结
也没啥总结,事已至此睡大觉吧。
ps:某些在外网把资源下载下来扔在CSDN赚积分的挺离谱的
参考
在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib - 只需一步 - 博客园
CMake编译OpenCV3.4.6时opencv_ffmpeg.dll等下载失败的解决办法_star_of_science的博客-CSDN博客
Windows下编译OpenCV+opencv_contrib相关推荐
- windows下编译opencv+opencv_contrid的Android版本
编译环境配置 需要下载android sdk,android NDK,Cmake,MinGW,ant,JDK 下载Android sdk,在下载sdk时需要注意,使用sdk24之前版本,由于新版本An ...
- Windows下编译扩展OpenCV 3.1.0 + opencv_contrib
在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib 为什么要CMake,这里我陈述自己的想法,作为一个刚使用opencv库的小白来说,有以下大概三点内容 1.由于在学 ...
- Windows下编译Chrome V8
主要还是参考google的官方文档: How to Download and Build V8 Building on Windows 同时也参考了一些其它的中文博客: 脚本引擎小pk:SpiderM ...
- Windows下编译 Hadoop
Windows下编译 Hadoop-2.9.2 系统环境 系统: Windows 10 10.0_x64 maven: Apache Maven 3.6.0 jdk: jdk_1.8.0_201 Pr ...
- Windows下编译tensorflow-gpu教程
这两个也要看: https://zhuanlan.zhihu.com/p/29029860 https://zhuanlan.zhihu.com/p/34942873 Windows下编译tensor ...
- Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序
参考:https://www.cnblogs.com/jliangqiu2016/p/7642471.html Windows下编译TensorFlow1.3 C++ library及创建一个简单的T ...
- windows下编译支持https的curl
先编译好openssl,过程详见:<windows下编译openssl> 编译好zlib,过程详见<windows下编译zlib> 1. 下载curl 官网:https://c ...
- 在Windows下编译FFmpeg详细说明
在Windows下编译FFmpeg详细说明 MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 Mi ...
- linux下find查找带有指定权限的文件(windows下编译的源代码文件)
find -type f -perm -o=x 查找用户在windows下编译的源代码文件 转载于:https://blog.51cto.com/axlrose/1357610
最新文章
- useradd与adduser的区别
- 搞垮服务的20条原则
- c语言综合性实验数字益智游戏排行榜,C语言综合性实验报告1.doc
- 【转】C++ vector的reserve和resize详解
- oracle 48小时内_近了近了,内马尔正大步向巴萨走来,西媒称有望48小时内敲定转会...
- 容器编排技术 -- Kubernetes kubectl edit 命令详解
- 【Xamarin挖墙脚系列:关闭 OS X El Capitan 中 SIP 安全设置功能】
- cocos2d-基本概念(5)-Effects 效果
- IT黑马之用户信息管理系统
- springboot + vue 全栈开发实战 读书感想
- 用while输出1到100的偶数python_用while语句,求1到100的偶数之和
- 【前端学习之HTMLCSS】-- 视觉格式化模型之二 浮动 -- 练习
- 阿里云海外服务器地域及所在城市国家对照表
- python日常记账本源代码,基于PySide6,支持快速查询、绘制图表
- 实现婚恋交友app源码,开发一个数字气泡的效果
- 2022/5/22 退役之战: acm山东省省赛银奖 被刻到耻辱柱上的收官之战(心态问题放在第一位)
- Java和web前端学哪个好?哪个更有前景
- centos7无人值守安装系统
- 成都工商企业数据爬取解读
- 一个小白安装Win10、CentOS 7双系统的经历,win10centos(亲测无误)