• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
经典环境(1)OpenCV3.4.9+OpenCV-Contrib +vs2015+cuda10.1编译

目标

编译opencv349和扩展库在vs2015,  cuda10.1,   使用sift角点检测库  

前提工作

下载 vs2015(非必须)

https://mp.weixin.qq.com/s/oOAxsbAEBigxvp356yINQQ
安装时勾选通用 Windows 平台开发(包括其子选项C++ 通用 Windows 平台工具)、使用 C++ 的桌面开发 以及 使用 C++ 的 linux 开发

下载显卡驱动并安装:(必须)

https://www.nvidia.cn/Download/index.aspx?lang=cn

下载 CUDA 10.1(你不编译cuda版本就不要)

https://developer.nvidia.com/cuda-downloads
建议下载至默认路径

安装完毕自动添加到系统路径

下载cuDNN v7.6.1

https://developer.nvidia.com/cudnn
需要注册 Nvidia 账号,cuDNN版本是与 CUDA 版本对应的,下载什么版本的 CUDA 就应该下载与之对应的 cuDNN 版本,此处 cuDNN v7.6.1与 CUDA 10.1对应。
下载后把压缩包内的bin、include、lib三个文件夹复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\文件夹下,覆盖原有的bin、include、lib。

下载CMake 大于3.11(必须)

https://cmake.org/download

 

0 下载最新的win10 sdk  (必须)

查看原始选择的SDK是否为10.0.10586.0,如果是选择其他版本的SDK。并重新Configure和Generate。不然后面一堆库因为SDK版本问题无法生成

打开官网下载 SDK

 https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk/

显示最新的10.0.19041.1要被安装

 

打开VS2015工程的时候验证是否存在

 

Step 1. 下载源码
    opencv  https://github.com/opencv/opencv/releases (各个版本都有)

    opencv_contrib https://github.com/opencv/opencv_contrib/releases (各个版本都有)

    注意:二者版本要一致!

Step 2. 使用CMake开始编译
    Cmake我是3.10版本的,之前下载安装的。CMake的安装网上还是有很多教程的,可百度一下。

    编译时需要填两个文件路径,

    (1)opencv3.4.9安装路径:F:\dongdong\0tool\navidia_cuda_opencv\OPENCV\Opencv349\opencv-3.4.9

    (2)目标文件(即编译后的工程文件)路径:F:\dongdong\0tool\navidia_cuda_opencv\OPENCV\Opencv349\opencv-3.4.9\build

    注意1:此处要根据你的安装地址来填。

    注意2:要根据你所用的VS版本和系统位数来选,比如我的 VS2015+x64(64位系统)。

WC  这个x64一定要选择 不然是默认的win32  导致我后面死活生成不成功

 

 

 

 

 

结束后

报错问题

中间一些报错 主要是有些库下载不了  查看报错记录 ,看看哪些该下载的没有下载

 一般这里只会报错一个python神的错,不用管。

1手动下载,并改名字一样放在临时的下载文件夹

 

 2直接找个好一点的网络 ,开启某飞机就能强出去。让他自己直接下载。

 

 

 

Step 3. 使用CMake再次编译


1扩展库

选择opencv_contrib中的module文件目录,填在opencv_extra_module_path选项中,再一次configure。  

    我的opencv_contrib中的module文件目录为: F:\dongdong\0tool\navidia_cuda_opencv\OPENCV\Opencv349\opencv_contrib-3.4.9\modules

2 为了能使用sift角点特征检测,使能nonfree

(为什么是nonfree?因为sift拿来商用不是免费的 - -)

 

 

 3 选择cuda(根据需要求)

 

 

 

 查看当前的cuda版本,确保配置的cuda版本装好了

 

 

 cuda路径没问题,确认当前版本确实是 10.1

 

 

 4 关于world问题(根据需求)

我这里没有选择,选择了直接生成一个库,虽然方便调用,但是整体杂糅在一个里面不方便。看个个人情况。

 

 5 基本样例和文档(一些默认的样例工程 根据自己需求)

examples

docs

 

 

 

 

重新点击配置,等待结束。

 

 

 

 成功后

 

 点击生成

 

报错问题

报错问题1 缺少ffmpeg库

https://blog.csdn.net/star_of_science/article/details/104406819

 

 

因为无法访问外网,自然就无法连接到下载服务器。那就直接通过外网下载好需要的文件,然后重命名为"md5-文件名",(md5就是前面跟的一堆数字和字母)放在 /.cache/ffmpeg/ 文件夹下面,或者直接放到目标路径 /3rdparty/ffmpeg/opencv_ffmpeg.dll(不用重命名)。

 

1手动下载,并改名字一样放在临时的下载文件夹。需要飞机强才能去下载。

 

 

 

 

 

 

 

 

 1ffmped一共要下载2个库和一个cmake

 

 

 

注意:

1.https://raw.githubusercontent.com/opencv/opencv_3rdparty/fe71c0ad807fdc33c2178e48e488f1e9b177c39a/ffmpeg/ffmpeg_version.cmake 无法直接下载,

而是直接打开了ffmpeg_version.cmake,可以右键网页选择另存为 ffmpeg_version.cmake.txt,然后再改为ffmpeg_version.cmake。

这里如果自己新建一个txt,然后直接将网页上的内容拷进去,然后再该后缀为.cmake是不行的,会提示md5不匹配。

2.不同版本的OpenCV对应的 opencv_ffmpeg.dll 等缺失文件的 md5 签名是不一样的

报错问题2 缺少ippicv库

根据报错记录手动去下载放在对应位置

 

 

 重新运行不再有上面的报错,且下载文件记录错误没有

 

 

 报错问题3 缺少 opencv_xfeatures2d需要的文件

这个问题在这个时候没有显示出来,先往后面走吧

 总之最后需要根据报错日志下载这些文件,放在对应文件夹

 

 

 报错问题4 路径中/ \问题导致找不到扩展库

 

 

 解析路径错误,估计是原有名字里的 - 和 . 导致了文件名解析问题??? 我把扩展库文件夹名字改了下,

原来

 F:\dongdong\0tool\navidia_cuda_opencv\OPENCV\Opencv349\opencv_contrib-3.4.9\modules

现在

 F:\dongdong\0tool\navidia_cuda_opencv\OPENCV\Opencv349\opencv_contrib_349\modules

 

还是报错 ,我看到camke默认其他路径都是 /  ,看样子是 / 和 \ 问题了

再次修改

F:/dongdong/0tool/navidia_cuda_opencv/OPENCV/Opencv349/opencv_contrib_349/modules

 

再次最终cofigure

 

 

成功!

 

开始编译VS2015

完成后直接点击open project或者到编译输出目录下找到OpenCV.sln使用自己的VS打开此解决方案

 

 

第一次打开 默认是 debug  x64平台 直接生成就是带  d的库 . 但是我需要的是 relase x64, 所以修改生成平台。

(检验正确:因为前面cmake最开始选择平台的时候没有选择 VS2015 win64平台,默认32,工程打开默认是 debug  win32,我手动改成x64 ,一直报错目标平台为 32不符合,折腾了一晚上我去)

打开解决方案后在x64 relase下重新生成解决方案,生成得库都是不带d的。(同理在debug下面生成得都是带d的库)

重新生成过程中如果遇到提示“某个项目外部环境已更改”,选择全部重新加载即可。

 

配置CUDA的情况下,重新生成解决方案的时间很长,平均都要2-3小时,耐心等待吧。

 

哇 漫长几个小小时后,提示“某个项目外部环境已更改”,选择全部重新加载即可。(不要选择重新生成解决方案,而是直接生成解决方案)

又过了10几分钟结束。

输出一些报错

报错问题1 win10 sdk没有更新带来的问题。

win10 sdk没有跟新的缘故,这个我在开头就写了要提前跟新win10 sdk,所以你现在应该不会遇到这个问题。

 

 

导致后面

 

 https://www.pianshen.com/article/1371144793/

 

解决方法 

这个需要一开始cmake就要安装好

 查看原始选择的SDK是否为10.0.10586.0,如果是选择其他版本的SDK。并重新Configure和Generate。

打开官网下载 SDK

 https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk/

显示最新的10.0.19041.1要被安装

 

 然后重新camke  提示从  10.0.19041切换到了 10.0.18362(我都没装10.0.18362他怎么就自动切换过去了)

不管了直接编译

 

 

完成后打开vs工程 ,发现平台这 个地方,有最新的 10.0.19041,但是上个版本就是10.0.10586.0,所以这个应该是之前报错的原因。

不管了只要不是10.0.10586.0,继续生成往生成解决方案。

 

 

 

 等待安装完成。

哇 看到这个库中终于生成了  opencv_videoio349,dll  那就是WIN10 sdk 10.0.10586.0本版导致的问题

 

  你以为结束了么,NO   整个解决方案 还有别的报错4个

 问题2 xfeatures2d没有生成问题

xfeatures2d需要依赖一些文件 ,camke时候没有下载到,而且那个时候也不会显示出来,需要手动下载这些库到指定文件夹,然后重新cmake生成,打开工程生成解决方案。

 

但是报错信息太多找不到那个错了,直接 单独生成下install,看看哪些库没生成。

 

 

 

 

 

这个成功没用,缺少的库还是没生成,查看库路径

 

 

 

 

 但是没找到 关于siff的库,而且在解决方案的报错里我看到有一条 xfeatures2d什么的报错,我们在次生成下解决方案

千万别选择 重新生成,不然又是一天

 

 这次报错信息明显少了

1>------ 已启动生成: 项目: opencv_xfeatures2d, 配置: Release x64 ------
1>  boostdesc.cpp
1>  vgg.cpp
1>F:\dongdong\0tool\navidia_cuda_opencv\OPENCV\Opencv349\opencv_contrib_349\modules\xfeatures2d\src\boostdesc.cpp(654): fatal error C1083: 无法打开包括文件: “boostdesc_bgm.i”: No such file or directory
1>F:\dongdong\0tool\navidia_cuda_opencv\OPENCV\Opencv349\opencv_contrib_349\modules\xfeatures2d\src\vgg.cpp(490): fatal error C1083: 无法打开包括文件: “vgg_generated_120.i”: No such file or directory
2>------ 已启动生成: 项目: opencv_perf_xfeatures2d, 配置: Release x64 ------
3>------ 已启动生成: 项目: opencv_stitching, 配置: Release x64 ------
2>LINK : fatal error LNK1181: 无法打开输入文件“..\..\lib\Release\opencv_xfeatures2d349.lib”
3>  opencv_stitching_pch.cpp
3>F:\dongdong\0tool\navidia_cuda_opencv\OPENCV\Opencv349\opencv-3.4.9\modules\stitching\include\opencv2/stitching/detail/matchers.hpp(52): fatal error C1083: 无法打开包括文件: “opencv2/xfeatures2d/cuda.hpp”: No such file or directory
4>------ 已启动生成: 项目: opencv_test_xfeatures2d, 配置: Release x64 ------
4>LINK : fatal error LNK1181: 无法打开输入文件“..\..\lib\Release\opencv_xfeatures2d349.lib”
5>------ 已跳过生成: 项目: opencv_modules, 配置: Release x64 ------
5>没有为此解决方案配置选中要生成的项目 
6>------ 已跳过生成: 项目: gen_opencv_python_source, 配置: Release x64 ------
6>没有为此解决方案配置选中要生成的项目 
7>------ 已跳过生成: 项目: gen_opencv_java_source, 配置: Release x64 ------
7>没有为此解决方案配置选中要生成的项目 
8>------ 已跳过生成: 项目: RUN_TESTS, 配置: Release x64 ------
8>没有为此解决方案配置选中要生成的项目 
9>------ 已跳过生成: 项目: uninstall, 配置: Release x64 ------
9>没有为此解决方案配置选中要生成的项目 
10>------ 已跳过生成: 项目: opencv_perf_tests, 配置: Release x64 ------
10>没有为此解决方案配置选中要生成的项目 
11>------ 已跳过生成: 项目: opencv_tests, 配置: Release x64 ------
11>没有为此解决方案配置选中要生成的项目 
12>------ 已跳过生成: 项目: INSTALL, 配置: Release x64 ------
12>没有为此解决方案配置选中要生成的项目 
13>------ 已跳过生成: 项目: PACKAGE, 配置: Release x64 ------
13>没有为此解决方案配置选中要生成的项目 
========== 生成: 成功 0 个,失败 4 个,最新 169 个,跳过 9 个 ==========

  关键报错问题

编译OpenCV 以及 openc_contrib 提示缺少boostdesc_bgm.i文件出错

https://blog.csdn.net/qq_38131812/article/details/90292703

解决方式:
查看build文档下的CMakeDownloadLog.txt文件,搜索boostdesc_bgm.i,Log里有它的下载地址,直接复制地址到网页可以得到文件的源码,直接在 opencv_contrib/modules/xfeatures2d/src/ 路径下并拷贝其源码即可。
总共缺了以下几个文件:

 

 显示成功1,失败后面都是0,恭喜就表示生成成功了。

 

boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

 

查看报错日志 果然是,那就手动下载吧

 

 

https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i

  直接访问还打不开,开启某飞机,就刷出来了,那是不是我配置的时候开着,后面就不报错这问题

  

 

 1要么一个个下载 手动放过去对应文件夹,肯定可以。

重新打开VS工程 清理之前的生成

 

 

 重新生成

 

 

 

2我直接重新 生成一下,在某飞机运输下自己动下载吧,但是他还是没能下载,只能1手动下载别偷懒了。

 

 

 再次打开VS2015工程,提示全部重新加载,再次生成

 结束后 

尼玛呀,还有两个错误

 

先单独生成install 确保起码xfeatures2d生成了。

 

 确实生成了

 

 

 

 报错3 未知

继续解决剩下两个错误,初步感觉这个两个不影响大局使用先忽略。

 

 

 

使用opencv3.4.9

配置项目属性
生成成功之后,在目的路径会新生成一个Install文件夹,该文件夹就相当于结合了opencv_contrib的opencv库目录。

1、将目的路径 F:\dongdong\0tool\navidia_cuda_opencv\OPENCV\Opencv349\opencv-3.4.9\build\install\x64\vc14\bin路径加入到电脑的环境变量当中

 

 


2、按照正常步骤配置opencv就行了。

https://www.cnblogs.com/rainbow70626/p/9067467.html

posted on 2020-06-13 02:48  MKT-porter  阅读(897)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3