win10系统下cuda+cmake+vs2015+opencv+contrib编译

  • 根据网上的各种教程零零散散弄了三天的环境,觉得需要写个博客记录一下总体过程,说不定哪天就重装系统了呢。

  • 用到的工具及配置:
    win10 + GeForce MX150显卡
    CUDA10.0 + cuDNN
    tbb + Cmake3.14.1 + OpenCV4.1.0 + opencv_contrib-4.1.0
    VS2015
    工具全部在官网下载即可。

CUDA+cuDNN安装

       官网下的CUDA10.0版本,我直接用的精简安装,一路一直点下一步。
       安装完成之后在命令行输入nvcc -V看到版本如下:
       win10系统下cuda+cmake+vs2015+opencv+contrib编译_第1张图片
       看到版本显示成功,一开始以为没有问题了横冲直撞就往下继续,结果出问题···网上查资料看到有说可以运行deviceQuery.exe查询设备信息(deviceQuery.exe的默认路径在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\demo_suite中)。
       运行exe,显示cudaGetDeviceProperties returned 30获取设备信息失败,去设备管理器中查看英伟达显卡的驱动发现是损坏状态,只能卸载驱动之后去官网找了MX150对应的驱动版本进行重装。
       官网网址:https://www.nvidia.cn/Download/index.aspx?lang=cn
       重装驱动之后再次运行deviceQuery显示正常,如下:
       win10系统下cuda+cmake+vs2015+opencv+contrib编译_第2张图片
       安装完CUDA之后在官网上查找CUDA10.0对应的cuDNN版本进行下载(版本一定要对应),解压之后如图:
       win10系统下cuda+cmake+vs2015+opencv+contrib编译_第3张图片
       分别将bin\cudnn64_7.dll,include\cudnn.h,lib\x64\cudnn.lib复制到之前CUDA的安装目录下(我的是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0)的bin,include,lib\x64文件夹下。

下载tbb+Cmake+OpenCV+opencv_contrib

       这些都是直接下载之后解压到本地(顺便要记住它们的解压路径,后面要用到)。
       tbb的路径还需要添加到环境变量中,路径为:tbb的解压路径\bin\intel64\vc14(vc14是vs2015编译器,不同的配置路径可能有所不同)。

Cmake配置

       打开Cmake的bin文件夹下的gui界面,如图
       win10系统下cuda+cmake+vs2015+opencv+contrib编译_第4张图片
       在source code里打开opencv4.1.0源码所在位置,build the binaries里打开想要将创建的项目放的位置,我的设置:
       win10系统下cuda+cmake+vs2015+opencv+contrib编译_第5张图片
       点下方的Configure,第一次会弹窗进行配置,按照自己的配件进行选择,我选的是VS2015+x64。
       第一次Configure之后会有一堆报红,在里面找到with_cuda、with_tbb、with_eign打上勾;要加上opencv扩展库的话就找到OPENCV_EXTRA_MODULES_PATH,后面放入contrib中的modules文件夹,勾上OPENCV_ENABLE_NONFREE,另外注意不能勾选build_tbb,再一次点Configure。
       第二次Configure后需要在TBB_ENV_INCLUDE,TBB_ENV_LIB,TBB_ENV_LIB_DEBUG中分别填入tbb的inlude,tbb.lib,tbb_debug.lib,继续点Configure。我的路径:
       在这里插入图片描述
       第三次Configure后只出现了一行红色,但我的路径自动填上了,空的话填上tbb_stddef.h的位置即可:
       在这里插入图片描述
       到这里最后点击一次Configure我的配置就完成了,如果还有报红的话继续修改至完成,然后点Generate,Generate正常完成之后在上面填的目标路径下就会生成vs工程项目。

VS2015编译

       在目标路径下找到OpenCV.sln文件用VS2015打开,对项目进行批生成,勾上ALL_BUILD和INSTALL分别在release和debug两个版本下的选项,一共四个勾,如下:
       win10系统下cuda+cmake+vs2015+opencv+contrib编译_第6张图片
       好了,开始几个小时的漫长等待···

使用编译成功的OpenCV库

       这里的配置就已经和一般的OpenCV配置差不多了:

       1.将项目路径\install\x64\vc14\bin添加到环境变量中
       2.在vs项目中右击进行属性配置(记得将平台设置成对应的类型如x64),在包含目录中添加项目路径\install\include和install\include\opencv2,在库目录中添加项目路径\install\x64\vc14\lib
       win10系统下cuda+cmake+vs2015+opencv+contrib编译_第7张图片
       3.在链接器输入的附加依赖项中输入install\x64\vc14\lib中的所有lib文件,由于lib文件数量比较多,可以用dos命令生成txt文件之后直接复制粘贴进去,方法可参照:https://jingyan.baidu.com/article/ed15cb1b7220061be36981fa.html
       win10系统下cuda+cmake+vs2015+opencv+contrib编译_第8张图片
       配置完之后在网上看到可以拿opencv源码中的例子进行测试(https://www.cnblogs.com/asmer-stone/p/5530868.html),cpp文件路径为opencv-4.1.0\samples\cpp\tutorial_code\gpu\gpu-basics-similarity\gpu-basics-similarity.cpp,用这个cpp生成exe文件后cmd进入相应目录,放两张图片到相应目录下,然后运行:
       fileName.exe left.jpg right.jpg 10
       我的运行结果:
       win10系统下cuda+cmake+vs2015+opencv+contrib编译_第9张图片

踩过的一些坑

  • 由于我的电脑中之前就有VS2019,故一开始想着直接用2019编译试试,然鹅编译失败 == 显示必须要VS2013-2017的版本,只能老老实实去下了个VS2015
  • 用Cmake生成的时候我一开始勾选了BUILD_opencv_world,本想着这样后面生成的lib文件会少一点方便使用,但编译失败显示超过内部lik大小限制。。。只能回头取消这个选项重新cmake(哈。哈哈。)

你可能感兴趣的:(win10系统下cuda+cmake+vs2015+opencv+contrib编译)