编译cuda版本的opencv——cuda7.5+opencv2.4.9+vs2013

来源:互联网 发布:网络贷款app 编辑:程序博客网 时间:2024/05/16 19:39

由于想编译windows版本的caffe,对于其中所用到的依赖想自己进行编译,其中编译cuda版本的opencv是其中一步,这里主要参考了下面这篇博客。向作者致敬。我这篇大体上是对原文的翻译,其中红色标注出来的是我做的过程中需要问题需要注意的地方,提出来供大家参考。
https://initialneil.wordpress.com/2014/09/25/opencv-2-4-9-cuda-6-5-visual-studio-2013/

准备

编译中需要用到一些工具
CMAKE
可以到这里http://www.cmake.org/download/下载最新的版本安装,这里我使用的是CMAKE3.4.1-win32 Installer。具体安装过程不在说明,设置一下安装路径就下一步,下一步等等。
CUAD
这个不在多说,去NV官网https://developer.nvidia.com/cuda-toolkit下载安装就行,我用的是最新的CUDA7.5。安装时可以默认安装,如果对需要用到的东西比较了解,也可以自定义安装。我等菜菜还是默认安装好了。
OPENCV源码
去opencv官网下载就好了,这里我没有使用最新的opencv3.0.0。因为需要的关系,之前的一些东西都是在opencv2.4.X下作的,由于3.X和2.X之间的变化太大,不想修改,因此用的是opencv2.4.9。可以到http://opencv.org/downloads.html这里下载。下载windows版本的之后安装,会看到安装目录由两个文件夹,build和source,编译过的不带cuda的opencv和opencv的源码。
Intel TBB
在这里下载,https://www.threadingbuildingblocks.org/download。对于这个东西,作者说使用来编译opencv core用的,具体不太了解。
Python2.7
这里我重点说明一下,由于需要,我要编译x64版本的cuda_opencv。之前安装的python2.7是32位版本的,所以在编译时遇到了各种错误,比如python27_d.lib缺失等等,极其之忧伤,如果遇到类似带有Python的错误,可以参考一下,是不是Python的版本问题。这里,我使用的是x64位的python。 https://www.python.org/downloads/release/python-2711/可以到这里下载windows64位的版本。
VS2013
这个没什么好说的,安装使用就可以了。

编译过程

好了,准备工作到此为止,下面上正菜,不过切记,上面的准备工具一定要安装好。
1打开CMAKE

  • 选择opencv的Source Folder和Output Folder,并选中‘Advanced’
    如下图一所示,比如我的输入输出路径分别为C:\software\opencv2.4.9_cublas\opencv\sources和C:\software\opencv2.4.9_cublas\cuda_build_retry。这只是我随便取得名字,不一定要一样。
    图一

2选择编译选项

  • 选择’Configure’
  • 选择’Visual Studio 12 2013 Win64’
    如图二所示。
    图二

3 CMAKE编译配置
新的配置显示为红色,这里可以不需要管这么多,只要按如下步骤进行操作即可。结果如图三所示
这里写图片描述

  • 取消’BUILD_DOC’和’BUILD_EXAMPLES’
  • 确认’CMAKE_LINKER’是vs2013的路径
  • 取消’CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE’
  • 选择’WITH_CUBLAS’,’WIHT_CUDA’,’WITH_OPENGL’,’WITH_TBB’
  • 选择’CUDA_GENERATION’
    这里可以根据自己显卡的架构选择,比如我的显卡为GTX770,这里选择Kepler。显卡架构可以在这里查看:
    https://developer.nvidia.com/cuda-gpus
  • 点击’Configure’
    结果如图4所示。
    图四

4 CMAKE编译配置(2)

  • 选择TBB的include路径和lib路径
    这里的include为tbb安装时的../include路径,lib为../lib/intel64/vc12。例如我的路径分别为C:\software\opencv\tbb\include和C:\software\opencv\tbb\lib\intel64\vc12。这里我用的是vs2013,所以选择的是vc12。
  • 点击’Configure’
    结果如图五所示。这时应该没有红色的了。
    图五
  • 点击’Generate’
    结果如图六所示。
    图六
  • Tips
    所谓说一下关于Python的路径,在这里也可以看到,如果在之后的vs中build出现关于python的错误,可以到这里的界面来看看Python路径是否正确,当然,这里有限Python路径显示未找到,这可以不用管。如果这里路径有问题,建议重启电脑,可能是应为Python是刚装的,环境变量还没有生效。

5 VS2013中build
按照上述的步骤之后,会发现在output的路径中会生成相应的OpenCv.sln,以管理员身份用vs2013打开。

  • 修改文件
    修改..\opencv\sources\modules\gpu\src\nvidia\core\NCV.cu 在其中加上#include。否则,会报’max’ undefined error。如图七所示
    图七

6 build

这里就开始进行build了,分别在debug和release下进行build ALL_BUILD和INSTALL。
到这里基本就结束了。我是先在release模式下build ALL_BUILD和INSTALL。之后再debug模式下build ALL_BUILD和INSTALL的。
好了等会上图,现在在build,等大概一个小时吧。
终于,release x64版本编译成功,如图八所示。
图八
之后build INSTALL。如图九所示。
图九
然后是Debug版本的ALL_BUILD,结果如图十所示。
哎哎,遇到msb6006 cmd.exe 错误代码1的错误。重新build的一下吧。
哦耶,通过了,见图十一。
图十一
ok,继续INSTALL。结果见图十二。
图十二
- Tips:
建议先build modules中的opencv_core和opencv_gpu。没错后在build ALL_BUILD。不然可能等了一个多小时发现出错,令人崩溃。
另外,记得用管理员身份运行。
build之后,可能弹框,选择reload all。

1 0
原创粉丝点击