最近想要实现GPU加速,在网上找了很多资料,看了各种博文,终于自己成功编译了opencv2413带gpu模块的库。
现特此做一个记录:
独立显卡为:GTX 750Ti 软件及需要用到的库:cmake3.3.0+vs2013+opencv2413源码+cuda toolkits6.5.14+tbb43_20150611oss
主要步骤为:
1、在PCI插槽上安装独立显卡,并安装显卡驱动。
2、安装cuda toolkits6.5.14,安装好这个软件之后,就可以进行cuda的编程了。这里对应有32位和64位的安装程序,感觉应该与显存容量对应,比如我的显卡是2G的,所以只能安装32位的版本。
3、下载opencv2413源码
下载tbb库
4、可以开始编译了
双击打开安装好的cmake软件,选择源文件的路径和目标文件的路径。
5、第一次点击configure,如弹出如下图所示的对话框,让你选择VS的版本。请注意(如果要编译X86的dll,则选择下图所示,如果是X64的dll,则选择带win64的vs)。然后点击finish即可。
6、上一步骤的正常情况,会出现 Configuring done的信息,可以忽略不知道原因的警告。
然后,勾选WITH CUDA(默认勾选) 和WITH TBB。这里为了节约后面VS工程生成的时间,可以找到如下图所示两项,清空CUDA_ARCH_PTX,将CUDA_ARCH_BIN中仅保留所需GPU架构,
确定所需架构,请查询https://developer.nvidia.com/cuda-gpus
重新configure。
7、上一步骤的正常情况,还是会出现 Configuring done的信息,继续忽略不知道原因的警告。
此时,如下图所示,会出现红色警示信息,让选择TBB库的路径。
例如我的路径是:E:\opencv\opencv2413gpu32Available\tbb43_20150611oss\include
再次点击configure。之后,会出现如下图所示的红色信息,目的是为了让你检验cmake为你找的TBB库的具体路径是否正确。上面选择32位编译的,此时,就出现了ia32/vc12的目录。
继续点击configure,此时,不出意外,列表里的内容变成了全白。
8、点击Generate按钮,等待opencv的工程生成。出现Generating done信息,表示opencv的工程已经生成完毕。
9、到目标生成路径下,双击OpenCV.sln,打开opencv的整个工程。
10、选择CMakeTargets下INSTALL,右键“生成”,生成Debug版dll,lib。切换到release模式,进行同样的操作。
整个编译的过程非常的缓慢,并且出现在编译OpenCV_gpu这个模块的时候,出现c4819错误感觉非常影响速度,这个你要回到相应的cuda文件中,另存为unicode格式就好。
11、使用生成的dll和lib,与一般的配置opencv并无差别,唯一需要注意的是:需要同时选择对应的TBB库的dll。
比如我的就是这个文件夹:E:\opencv\opencv2413gpu32Available\tbb43_20150611oss\bin\ia32\vc12
编译过程中,参考了以下博文
http://www.cnblogs.com/freedomshe/archive/2013/01/11/win7_vs2012_opencv_rebuild.html
http://blog.sina.com.cn/s/blog_4b0020f30102vxba.html
http://blog.youkuaiyun.com/wangyaninglm/article/details/39997113
本文编译好的可用的带gpu的opencv2413,以及TBB可提供下载