以VS2017+OpenCV3.4.7+opencv_contrib3.4.7 为例,用cmake编译,实现所有版本轻松编译,其他版本组合都可借鉴

以VS2017+OpenCV3.4.7+opencv_contrib3.4.7 为例,用cmake编译,实现所有版本轻松编译,其他版本组合都可借鉴
说在前面:
重新编译opencv,opencv_contrib3.4.7是为了使用opencv的跟踪算法,但是因为版权原因opencv官方没有公布,但是在git_hub上有opencv_contrib3.4.7扩展包,研究了一天摸透了所有的方法,网上很多编译教程,我发现多多少少都有小伙伴没能成功编译,具体就是下载不到网上的文件,编译出错。现在详细记得把流程过一遍,保证不出错。以VS2017 Opencv3.4.7为例。放心我会教会你各种版本搭配的编译方法。接下来开始吧!
补充1:好多小伙伴好奇cmake是干嘛的呢?cmake可以利用源文件中的官方人员写好的CMakeLists.txt重新组织各个分文件.h,.cpp之间f复杂的关系,现在我们想要加入opencv_contrib就必须重新组织,所以需要我们重新编译,之前下载的是官方人员编译过好的,现在关系乱了就需要重新编译。另外网上发行的opencv时已经编译好的,大部分函数实现看不见,函数转定义只能看见函数声明,我们还可以通过这次编译实现详细的观察opencv源代码
补充2:opencv_contrib里面封装了 深度学习CNN算法,并且支持CUDE,sift, fast,跟踪,双目标定,线结构光标定算法 就这些算法,我觉得很值得编译学习源码也是一种享受,毕竟开源,是珍贵的学习资料。

1.软件下载

下载安装VS2017,opencv3.7.4,opencv_contrib3.4.7,cmake-gui3.1.8,要保证opencv和opencv_contrib版本一致。前提保证VS安装到位,因为Cmake需要提前安装好VS,软件下载列表如下:
cmke下载:(我用的3.18基本这个就可以 cmake版本要求不是很严格,具体的安装网上有记得把环境变量勾选,具体看网上教程)
https://blog.csdn.net/u011231598/article/details/80338941
opencv各版本:
https://github.com/opencv/opencv/releases
opencv_contrib各版本 :
https://github.com/opencv/opencv_contrib/releases
下载好解压先放着,兵马未动粮草先行哈哈哈。

2.编译过程重点

(关键点我粗写按照我的方法一步一步来应该不会出问题)

  1. 打开opencv,看见我标注的解释,要做的就是自己在这里面新建以一个newbuild文件用来存放我们一会接下来编译的文件。
    在这里插入图片描述
  2. 打开cmake,输入如下路径注意路径不要有中文!!!中间会选择VS版本,和32位和64位
    在这里插入图片描述
    按照上图3步,依次操作,会有报错信息会显示如下,基本是爆红,如下图:
    在这里插入图片描述
    我在图中标出来的方框,大意就是打开所显示的路径,查看具体信息。好,打开按照你的文件路径存放的CMakeDownloadLOg.txt文件,这个是编译汇报说明,里面有错误原因。上面这张图是我网上找的因为我在编译的时候没有截图,这个文件路径不要按照他的来,具体的 就在上文提到的自己新建的newbuild文件如图:
    在这里插入图片描述
    打开它密密麻麻,大概意思是,你的opencv文件中的souce中的.cache文件全是空的,cmake试图帮你下载 但是 你的网下载不了,我试过了就算适用VPN也下载不了。好了具体就不打开了,直接上方法!
  3. 打开你如下的对应的文件夹,
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

你会发现具体的每个文件里面的小文件都是空的,对了问题就在这里,那我们就下载相应的文件替换不就可以了吗,是的!
but,其中的ffmpeg,ippicv这两个文件是是严格和你的opencv还有vs版本有关系,其他的文件和版本无关,这里我把其他的文件放在百度网盘,链接:百度网盘
提取码:fnsc
大家自行下载,网盘文件如下图:

细心的同学会发现我给出的文件怎么对比你的多出.ade文件,具体我也不知道,其实没有他也行,我担心其他小伙伴因为版本原因,可能会不同,以防万一,放在文件夹也无大碍。

  好了现在开始填充ffmpeg,和ippicv文件,具体的针对你的类型查看方式如下:
 打开你opencv->sources->3rdpart  会发现存在两个文件夹ffmpeg,和ippicv文件。

在这里插入图片描述

ffmpeg版本查询:
打开ffmpeg文件夹,里面有个ffmpeg.cmake文件,选择用记事本打开如下图
在这里插入图片描述

在第 1 行可以找到所需要下载的分支名,即 # Binaries branch name: ffmpeg/3.4_20190612(把你对应的版本号记下来 我的是20190612)

在第 3 行可以找到对应提交记录的哈希值,即 1c661e754812d3423e8c15ccb9cdab57fc122c44(这个哈希值其实没用不用记录,你会发现这个哈希值就是之前我说的0KB文件夹名字的前半部分)

在这里插入图片描述
ippicv版本查询:
同样再上面的3rdpart文件夹打开ippicv文件夹中的ippicv.cmake文件夹在这里插入图片描述
在第 26 行可以找到所需要下载的分支名(这里以 win64 为例)。可以通过 OPENCV_ICV_NAME 变量的定义 来获取,如:set(OPENCV_ICV_NAME “set(OPENCV_ICV_NAME “ippicv_2019_mac_intel64_general_20180723.tgz”)”),其中的时间为 20180723,那么选对应的分支即可。(不用在乎你的事.tgz还是.zip一样的)

在第 5 行可以找到对应提交记录的哈希值,即 32e315a5b106a7

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值