cmake编译opencv cuda: Win10+cuda10.2+cudnn7.6.5+opencv-4.5.5+contrib4.5.5+vs2019

系统 :window 10

cuda:cuda_10.2.89_441.22_win10.exe

cudnn :cudnn-10.2-windows10-x64-v7.6.5.32

vs:VSCodeUserSetup-x64-1.63.2 .exe

首先说明我参考的博客,讲道理按照他的步骤就可以完成opencv+cuda+cudnn的混合编译


 

为了方便,直接转载别的博客

(109条消息) cmake编译opencv: Win10+cmake3.14.4+cuda10.0+cudnn7.6+opencv-4.0.0+contrib+vs2015_ALainGnOl的博客-CSDN博客_cmake cuda opencvhttps://blog.csdn.net/atpalain_csdn/article/details/90755764讲道理,按他的步骤没问题,一次通过,有时间录个视频记录一下。

//====================================================================

//=======================下便是引用别人===================================

cmake编译opencv: Win10+cmake3.14.4+cuda10.0+cudnn7.6+opencv-4.0.0+contrib+vs2015

  • 安装所需软件/库
  • Step1. 下载安装Anaconda3
  • Step2. 下载安装cmake 3.14
  • Step3. 下载安装CUDA 10.0
  • Step4. 下载安装cuDNN 7.6
  • Step5. 使用VS和CUDA编译测试文件
  • Step6. 下载安装TBB
  • Step7. 下载编译opencv-4.0.0和contrib
  • 支线任务


Win10+cmake3.14.4+cuda10.0+cudnn7.6+opencv-4.0.0+contrib+vs2015)

参考资料:

  • windows 10 64bit下安装Tensorflow+Keras+VS2015+CUDA8.0 GPU加速;
  • Win10 下Cmake编译配置 Opencv3.1 + Cuda7.5 + VS2013;
  • WIN10 + OpenCV3.4 + CUDA8.0 + Cmake3.9.0 + TBB + VS2015配置/重编译;
  • Win10安装CUDA10和cuDNN;
  • OpenCV 3.1.0 重编译——支持CUDA8.0;
  • opencv+cuda编译出现LNK2019 cv::__termination错误;
  • 图像质量评价方法PSNR+SSIM&&评估指标SROCC,PLCC.

---------------------- 超长文多图预警!!! ----------------------

安装所需软件/库

  • Anaconda3;
  • cmake 3.14;
  • CUDA 10.0;
  • cuDNN 7.6;
  • opencv-4.0.0;
  • opencv_contrib-4.0.0;
  • TBB 2019.

我下载的软件和库如下图所示:

所需软件/库

Step1. 下载安装Anaconda3

点击链接:Anaconda3,进入下载页面,注意先选择Windows系统,再点击Download进行下载,如下图所示:

在这里插入图片描述
下载完成开始安装软件。其他步骤可以选择默认,直接点击Next>。安装路径也可以使用默认的安装位置(C盘),这里我改在了D盘, 可根据个人喜好选择。

在这里插入图片描述
路径选好后,下面这一步,记得把红框部分都勾选上,然后点击Install,等待安装:

在这里插入图片描述
安装完成之后,打开cmd命令窗口,输入

python -V
  • 1

出现

Python 3.7.3 :: Anaconda, Inc.

证明安装成功。
下图我自己安装了3.7.2的版本,所以显示结果稍有差别。

在这里插入图片描述
Anaconda3下载安装完毕!

Step2. 下载安装cmake 3.14

进入cmake 3.14下载页。选择适合个人操作系统的 .msi 文件进行下载,比如我个人的电脑是64位操作系统,选择 cmake-3.14.5-win64-x64.msi ,如下图所示;如果是32位,则选择 cmake-3.14.5-win32-x86.msi 。

在这里插入图片描述
下载完成,先把之前安装的旧版本cmake卸载掉,才可安装新版本cmake。(如果电脑已安装cmake,也可尝试不安装新版本,使用旧版本cmake进行编译,也许同样能编译成功)

安装进入下图界面注意选择第三项,添加cmake到系统路径,下面是否创建桌面图标根据个人喜好勾选,选好后点击Next进入下一步。

在这里插入图片描述
安装路径根据个人喜好修改,这里我把C盘改成了D盘。如不愿意修改,也可以安装到默认路径C:\Program Files\CMake\。路径修改好后,直接点击Next进入下一步,开始软件安装。

在这里插入图片描述
安装完成后出现以下画面,点击Finish,结束安装。

在这里插入图片描述
cmake安装完毕!

Step3. 下载安装CUDA 10.0

进入CUDA 10.0下载页。Win10操作系统,可按照下图深绿色部分进行选择;如果非Win10,则根据个人操作系统选择合适的选项。选好后点击下图红色框内的Download进行下载。

在这里插入图片描述
下载完成后,打开安装程序。提示将CUDA的安装文件提取到临时文件夹中,提取路径可选择默认(提取到C盘)或自定义,然后点击OK。

在这里插入图片描述
等待文件提取:

在这里插入图片描述
提取结束,出现NVIDIA程序安装界面:

在这里插入图片描述
出现以下画面,AGREE AND CONTINUE点起来。

在这里插入图片描述
选择Custom(Advanced),然后NEXT。

在这里插入图片描述
这里,全都要,然后NEXT。

在这里插入图片描述
这里进入关键一步,选择安装位置,可选择默认或自定义。这些路径在后面配置环境变量的时候需要用到,一定要注意保持一致。比如在这里我都安装在了D盘,之后环境变量也要写D盘的路径。都选好后点击NEXT,开始安装。

在这里插入图片描述
等待安装:

在这里插入图片描述
安装完成后,NEXT。

在这里插入图片描述
然后CLOSE,结束安装。

在这里插入图片描述
安装完成,配置系统环境变量。首先确认是否下图的两项环境变量:

在这里插入图片描述

将刚才CUDA安装路径添下的相应文件夹添加到Path中,如下图:

在这里插入图片描述
验证CUDA是否安装成功。cmd或是PowerShell中输入:

nvcc -V

如正确安装,则会出现以下输出结果:

在这里插入图片描述
CUDA安装、配置完成!

Step4. 下载安装cuDNN 7.6

点击此链接:cuDNN 7.6,进入下载页。下载前必须登陆NVIDIA账号,如果已有NVIDIA账号,点击Login,进入登陆界面;如果没有账号,则需要注册以后登陆。

在这里插入图片描述
登陆界面如下,输入注册好的账号和密码,点击Login进入下载页。

在这里插入图片描述
进入下载页面后先勾选同意条款 I Agree To… ,然后选择与cuda版本对应的cuDNN库,我们这里选择第一个 … for CUDA 10.0 ,然后Win10系统选择 cuDNN Library for Windows 10 ,开始下载cuDNN库。

在这里插入图片描述
下载完成后解压文件,解压出来的cuda目录下包含如下内容:

在这里插入图片描述
接着,我们将以上文件夹中的文件,复制到已安装的cuda文件夹的相应位置下:

  • 将bin中的 cudnn64_7.dll ,复制到D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin
  • 将include中的 cudnn.h ,复制到D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include
  • 将lib\x64中的 cudnn.lib ,复制到D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64.

在这里插入图片描述
请根据个人安装cuda的路径,找到文件复制的位置。如果之前cuda的安装路径为默认路径,则把上面的路径的盘符D:都改为C:即可找到相应路径。

以上文件都复制完以后,将库路径D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64,添加到环境变量中。(同样地,路径需要根据个人情况做相应修改)

点击右下角的Environment Variables环境变量按钮:

在这里插入图片描述
双击Path行进入编辑环境变量界面:
在这里插入图片描述
右边点击New新建按钮,添加红色方框内的路径:

在这里插入图片描述

cuDNN安装、配置完毕!

Step5. 使用VS和CUDA编译测试文件

进入D:\Program Files\NVIDIA Corporation\CUDA Samples\v10.0文件夹,打开Samples_vs2015.sln这个工程:

在这里插入图片描述
编译生成1_Utilities中所有的文件。注意红框部分选择Releasex64

在这里插入图片描述
如果编译成功,则可以看到下图提示:

在这里插入图片描述
D:\Program Files\NVIDIA Corporation\CUDA Samples\v10.0\bin\win64\Release中会生成一些应用程序和库文件,我们只需要deviceQuery.exebandwidthTest.exe进行验证。

在这里插入图片描述
在文件夹空白处Shift+鼠标右键,选择Open PowerShell window here,打开PowerShell
窗口,运行deviceQuery.exe。窗口输入:

.\deviceQuery.exe

显示Result = Pass,表示安装测试成功。

在这里插入图片描述
接下来运行bandwidthTest.exe,窗口输入:

.\bandwidthTest.exe

同样的,显示Result = Pass,表示安装测试成功。

在这里插入图片描述
VS和CUDA编译测试完毕!

Step6. 下载安装TBB

点此链接下载TBB 2019, 下载页面如下图所示:

在这里插入图片描述
下载后,根据个人喜好,可将文件解压到任意路径,这里解压到了D:\Program Files目录下,如下图所示:

在这里插入图片描述
然后设置环境变量,将D:\Program Files\tbb2019_20190410oss_win\tbb2019_20190410oss\bin\intel64\vc14添加到Path中:

在这里插入图片描述
TBB安装、配置完成!

Step7. 下载编译opencv-4.0.0和contrib

点击以下链接进行下载:

  • opencv-4.0.0;
  • opencv_contrib-4.0.0.

新建一个文件夹,用来存放提取出来的opencv和contrib源码文件,方便后续编译查找和添加路径,这里我们命名为opencv400_source(可根据个人喜好命名):

在这里插入图片描述
再新建一个文件夹,作为目标文件夹,编译后的opencv文件将会生成到该目录下,命名为opencv400_CUDA
在这里插入图片描述
打开D:\opencv400_source\opencv_contrib-4.0.0\modules\cudev路径下的CMakeLists.txt文件:

在这里插入图片描述

set(the_description “CUDA device layer”)

下一行增加

set(OPENCV_SKIP_DLLMAIN_GENERATION ON)

这么做是为了避免后续使用VS2015生成opencv库文件时,出现LNK2019 cv::__termination错误。

在这里插入图片描述
打开cmake,设置源码路径D:\opencv400_source\opencv-4.0.0\sources和目标路径D:\opencv400_CUDA,然后点击Configure:

在这里插入图片描述
弹出编译环境选择界面,选择Visual Studio 14 2015x64,然后点击Finish:在这里插入图片描述
接下来进行编译配置:

  • 添加contrib路径:D:\opencv400_source\opencv_contrib-4.0.0\modules
  • 勾选OPENCV_ENABLE_NONFREE
  • 勾选WITH_CUDA
  • 勾选WITH_TBB

然后点击Configure。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这时还会出现红色部分,继续进行相应配置:

  • 添加TBB相关路径;
  • 去掉勾选WITH_MATLAB

TBB路径可对照下图进行相应添加。去掉勾选WITH_MATLAB,是为了在之后VS2015编译过程中,避免出现 Error: MEXEXT: Unsupported platform 形式的错误。配置完成点击Configure。

在这里插入图片描述
之后出现TBB_VER_FILE的路径配置,已自动填写,检查确认无误,直接点击Configure。

在这里插入图片描述
表单全白,说明配置没有问题,点击Generate。
在这里插入图片描述
显示Generating done,说明cmake编译opencv顺利完成!
在这里插入图片描述

编译生成的文件在目标文件夹D:\opencv400_CUDA下,用VS2015打开OpenCV.sln工程:

在这里插入图片描述
先不要急着ALL_BUILD,先生成opencv_coreopencv_cudacodec。如果这两个项目能够通过,我们再全部生成;如果报错,说明之前的cmake编译有问题,根据错误提示进行相应的查找和分析,这样可以节省大量的时间。
生成顺序如下图所示:

在这里插入图片描述
opencv_core生成成功:

在这里插入图片描述
opencv_cudacodec生成成功:

在这里插入图片描述
接下来开始ALL_BUILD,生成过程相当漫长,可以该干嘛干嘛去。完事回来,蹦出以下错误:

在这里插入图片描述
该错误提示链接失败,无法打开opencv_cudabgsegmopencv_cudaobjdetect的库文件。接下来我们单独对这两个项目重新生成:

在这里插入图片描述
喜闻乐见,opencv_cudabgsegm生成成功:

在这里插入图片描述
opencv_cudaobjdetect也同样生成成功:

在这里插入图片描述
这时,我们可以在D:\opencv400_CUDA\lib\Debug目录下,确认生成相应的.lib文件:
在这里插入图片描述
重新ALL_BUILD,坐等结果。。。

编译的过程中可能出现一下三个问题:

  1. 如果遇到boostdescvgg的问题,可参考
    fatal error: boostdesc_bgm.i: vgg_generated_80. vgg_generated_120.i没有那个文件或目录文章中提到的办法解决。所需文件下载地址:boostdesc,vgg。
    将解压缩后的文件放到opencv_contrib/modules/xfeatures2d/src目录下,用Cmake重新配置一遍,然后重复以上操作即可。

  2. 如果遇到 “features2d/test/test_detectors_regression.impl.hpp”: No such file or directory的问题,可参考VS2015+OpenCV4.1.1拓展模块配置主要错误解决方案中提到的方法解决。

  3. 如果遇到 error LNK1104: 无法打开文件“python37_d.lib” 的问题,可参考编译OpenCV缺少python27_d.lib的解决方法的方法来解决。

生成成功!没有报错!
这就预示着之后生成INSTALL项目一路坦途一马平川,该填的坑都填平了,可以哼着小曲小嗨一会儿。

在这里插入图片描述
鼠标轻轻一抖,INSTALL生成起来。果不其然,生成得舒心又顺畅:

在这里插入图片描述
install文件夹下,出现了相当亲切的文件目录:binincludex64\vc14\lib,接下来大家知道该怎么做了。

在这里插入图片描述
配置编译好的opencv。
首先配置环境变量,在Path中添加D:\opencv400_CUDA\install\x64\vc14\bin,注销或重启电脑使其生效:

在这里插入图片描述
接下来配置VS项目属性。
新建一个控制台应用程序,在项目名称上右键,然后点击 Properties(属性):
在 VC++ Directories 中添加 Include Directories 和 Library Directories

在这里插入图片描述
Include Directories 中添加以下两个路径:

D:\opencv400_CUDA\install\include\opencv2
D:\opencv400_CUDA\install\include

在这里插入图片描述
Library Directories中添加以下路径:

D:\opencv400_CUDA\install\x64\vc14\lib

在这里插入图片描述
接下来要输入附加依赖项,就是在 Linker – Input – Additional Dependencies 里面,把生成的所有 .lib的文件名都写上。

在这里插入图片描述

下面是一个比较便捷的操作,以生成debug的库名称为例。在 D:\opencv400_CUDA\install\x64\vc14\lib 文件夹空白处Shift+鼠标右键,点击 Open PowerShell window here,打开PowerShell命令窗口。

在这里插入图片描述
输入以下命令行:

dir *d.lib -Name >debug_lib.txt

在这里插入图片描述

在文件夹中会生成一个名为 debug_lib.txt 的文本文件,里面包含了所有debug版本的库文件名,如下图所示:

在这里插入图片描述

Ctrl+A选中全部文本,将所有文件名复制粘贴到 Additional Dependencies 的文本框中,点击OK:

在这里插入图片描述

到这里,opencv配置完成!

接下来要做的就是测试刚才编译生成的opencv库,看看是否可以正常使用GPU加速。
找到 D:\opencv400_source\opencv-4.0.0\sources\samples\cpp\tutorial_code\gpu\gpu-basics-similarity 文件夹下的 gpu-basics-similarity.cpp 文件:

在这里插入图片描述

把该文件中的内容复制到刚才配置好opencv的测试工程中,注意选择x64Debug版本,然后在项目名称上右键,点击Build(生成):

在这里插入图片描述
项目顺利生成:

在这里插入图片描述
到此,opencv编译和测试全部完成!!!
用GPU尽情加速吧,少年!!!

支线任务

如果你想把这个例程跑起来,就需要对上面的代码做一定的修改。不难,有兴趣的朋友可以自己尝试。
将下图作为输入图像:

在这里插入图片描述
将原图缩小5分之一再放大回原尺寸的图像,作为待测图像,如下图所示:

在这里插入图片描述
运行结束,将会得到CPU和GPU运算时间对比,以及图像质量评价结果,如下图所示:

在这里插入图片描述
Mission completed! Well done, Boy!

你可能感兴趣的:(opencv,计算机视觉,深度学习)