文章目录

  • 前言
  • 一、写在前面重要的事
  • 二、正文
    • 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 | CMakehttps://cmake.org/download/二、正文

1.安装步骤

也许大概这东西其实没什么步骤。

OpenCV和opencv_contrib的安装过程实际上就是解压过程,建议解压在除C盘外的盘,解压完成后得到(自己改了文件名):

 Visual Stuio和CMAKE就一路next的就完了。安装完大概就是这样。

2.编译及配置

打开CMAKE,填写相关参数,包括:OpenCV源码目录和OpenCV.sln工程的导出目录


 添加完扩展包路径后,勾选:

  1. BUILD_opencv_world(为了避免配置属性表时一大堆的依赖项)

  2. BUILD_EXAMPLES(编译opencv自带的程序案例,可不选)

  3. 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相关推荐

  1. windows下编译opencv+opencv_contrid的Android版本

    编译环境配置 需要下载android sdk,android NDK,Cmake,MinGW,ant,JDK 下载Android sdk,在下载sdk时需要注意,使用sdk24之前版本,由于新版本An ...

  2. Windows下编译扩展OpenCV 3.1.0 + opencv_contrib

    在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib 为什么要CMake,这里我陈述自己的想法,作为一个刚使用opencv库的小白来说,有以下大概三点内容 1.由于在学 ...

  3. Windows下编译Chrome V8

    主要还是参考google的官方文档: How to Download and Build V8 Building on Windows 同时也参考了一些其它的中文博客: 脚本引擎小pk:SpiderM ...

  4. 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 ...

  5. Windows下编译tensorflow-gpu教程

    这两个也要看: https://zhuanlan.zhihu.com/p/29029860 https://zhuanlan.zhihu.com/p/34942873 Windows下编译tensor ...

  6. Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序

    参考:https://www.cnblogs.com/jliangqiu2016/p/7642471.html Windows下编译TensorFlow1.3 C++ library及创建一个简单的T ...

  7. windows下编译支持https的curl

    先编译好openssl,过程详见:<windows下编译openssl> 编译好zlib,过程详见<windows下编译zlib> 1. 下载curl 官网:https://c ...

  8. 在Windows下编译FFmpeg详细说明

    在Windows下编译FFmpeg详细说明 MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 Mi ...

  9. linux下find查找带有指定权限的文件(windows下编译的源代码文件)

    find -type f -perm -o=x 查找用户在windows下编译的源代码文件 转载于:https://blog.51cto.com/axlrose/1357610

最新文章

  1. useradd与adduser的区别
  2. 搞垮服务的20条原则
  3. c语言综合性实验数字益智游戏排行榜,C语言综合性实验报告1.doc
  4. 【转】C++ vector的reserve和resize详解
  5. oracle 48小时内_近了近了,内马尔正大步向巴萨走来,西媒称有望48小时内敲定转会...
  6. 容器编排技术 -- Kubernetes kubectl edit 命令详解
  7. 【Xamarin挖墙脚系列:关闭 OS X El Capitan 中 SIP 安全设置功能】
  8. cocos2d-基本概念(5)-Effects 效果
  9. IT黑马之用户信息管理系统
  10. springboot + vue 全栈开发实战 读书感想
  11. 用while输出1到100的偶数python_用while语句,求1到100的偶数之和
  12. 【前端学习之HTMLCSS】-- 视觉格式化模型之二 浮动 -- 练习
  13. 阿里云海外服务器地域及所在城市国家对照表
  14. python日常记账本源代码,基于PySide6,支持快速查询、绘制图表
  15. 实现婚恋交友app源码,开发一个数字气泡的效果
  16. 2022/5/22 退役之战: acm山东省省赛银奖 被刻到耻辱柱上的收官之战(心态问题放在第一位)
  17. Java和web前端学哪个好?哪个更有前景
  18. centos7无人值守安装系统
  19. 成都工商企业数据爬取解读
  20. 一个小白安装Win10、CentOS 7双系统的经历,win10centos(亲测无误)

热门文章

  1. Servlet技术总结
  2. numpy.corrcoef()函数讲解
  3. 通达信网上交易接口的运行结果
  4. 简单的免杀方法(基本知识)
  5. 零起点学VB做外挂(五)
  6. 飞思卡尔智能车—电磁循迹(节能组)
  7. yum安装的时候报错Couldn't open file /mnt/repodata/repomd.xml
  8. 2018年AI圈八大造假事件:罗生门此起彼伏,比娱乐圈精彩
  9. 鲁大师html5性能,安兔兔和鲁大师公布最新手机性能/流畅度排名
  10. 全国最好吃的大学食堂来啦!隔壁小孩都馋哭了!