准备工作:
1、 在编译openCV 之前,首先确定本机显卡类型是否支持NVIDIA,因为openCV的GPU加速采用的是CUDA,而只有NVIDIA显卡设备才支持NVIDIA运算。
2、 去官网https://developer.nvidia.com/cuda-toolkit下载CUDA Toolkit,这里采用的是CUDA Toolkit5.0;从 https://www.threadingbuildingblocks.org/下载TBB工具包,这里采用的是tbb44。
将CUDA进行安装,安装过程参考本人博客 http://blog.csdn.net/wpynicholas/article/details/50853462 《GPU编程——CUDA在VS2010下环境搭建》,并将tbb解压到固定任意目录。
3、 从https://cmake.org/download/下载编译工具CMake,并进行安装。这里采用的是CMake3.3.1,
编译过程:
1、 运行CMake,选择opencv源码所在目录和编译生成的目标目录,如图所示
2、 点击configure 按钮,弹出对话框,如下图所示,选择所编译的工程环境。
我这里选择的是编译VS2010 的Win32版本,如需编译Win64版本,选择Win64,如你安装的是别的版本VS,选择对应的版本即可。
然后点击Finish按钮,等待,如下图所示。
3、 勾选BUILD_EXAMPLES、WITH_CUBLAS、WITH_CUDA、WITH_CUFFT WITH_NVCUVID WITH_FAST_MATH、WITH_TBB,再次点击configure按钮,如下图所示。
修改红色区域内的TBB所在的头文件路径,即前面准备工作步骤2中你解压TBB所在的目录下的include目录。修改以后,再次点击configure按钮,如下图所示
查看TBB的TBB_LIB路径和TBB_STDDEF路径是否正确,不正确则修改,注意这里要区分32位和64位,如你编译32位的,选择32位路径,如你编译64位,选择对应的64位路径。修改完成,再次点击configure按钮,如下图所示。
查看下面的信息是否正确,如果正确,则点击Generate 按钮,如下面显示Generating done,则显示生成成功。
4、 进入对应的生成结果目录,如下图所示,会生成VS的OpenCV相应的工程及解决方案,如下图所示。
5、 双击打开OpenCV解决方案,进行编译即可,编译过程中有时候会出现找不到头文件或者CUDA的库无法解析的情况,你不一定会遇到,但是我遇到了,我重新配置了一些VS工程CUDA对应的头文件以及库目录即可。编译过程比较耗时,耐心等待就可以了。
编译好以后,新建工程进行测试,代码如下:
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <opencv2/gpu/gpu.hpp>
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
int iDevicesNum = gpu::getCudaEnabledDeviceCount();
printf("Gpu device num = %d\r\n",iDevicesNum);
system("pause");
return 0;
}
运行输出Gpu device num,其输出的是本机中GPU设备的个数,当不为0时,则说明编译成功。
本来打算将自己编译好的上传到资源里,结果一看太大,如果有需要的不打算自己进行编译,可以给我留言。我这里有编译好的x86版本和x64版本,采用的是OpenCV244、VS2010、CUDA5.0、TBB44。