首先说一下我的电脑是Win7 64位的操作系统, 安装的是32为的Vs2008,要编译的是OpenCv2.4.3和TBB4.2;
编译的过程是一个有好多人都说过了其中这个人的博客说的最详细,也最全面:http://blog.csdn.net/shuxiao9058/article/details/7529684
下面的内容我只是把这篇文章粘贴过来,方便大家查看(其中绿色的部分是与原文不同的地方,同时也是我们需要注意的):
前面,我们讲到了使用OpenCV-2.4.0在Visual Studio 2005/2008/2010常规编译的方法,本文则主要讲述如何使OpenCV支持CUDA高速运算。
我们将要使用的工具除了常规编译方式使用的工具外,还要使用CUDA tookit和GPU Computing SDK,如本人使用的版本分别为cudatoolkit_4.2.9_win_64.msi和gpucomputingsdk_4.2.9_win_64.exe(我的电脑是64位系统),相关文件可以从官网下载。
下载完成后并安装,确保CUDA SDK的bin目录(“C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK4.2\C\common\bin”)已经添加到环境变量中后,我们就开始编译支持CUDA高速运算的OpenCV。
本文以Visual Studio 2005 Professional为例,其他编译器总体一样,只不过在intel tbb环境变量配置这一步略微不同,可以参考博文:使用OpenCV-2.4.0.exe文件编译x86或x64平台Visual Studio2005/2008/2010目标文件。
假设我们已经将OpenCV-2.4.0源代码放到“C:\Program Files\OpenCV\src”目录下,安装完成cmake,并将ntel tbb可执行目录添加到系统环境变量,并使变量生效,相关部分参考博文:使用OpenCV-2.4.0.exe文件编译x86或x64平台Visual Studio2005/2008/2010目标文件。
运行cmake,如图1所示,然后单击“Where is the source code:”右侧的“Browse Source”,浏览到“C:/ProgramFiles/OpenCV/src”文件夹,单击“where to build the binaries:”右侧的“Browse Build”,浏览到“C:/Program Files/OpenCV/vs2005”文件夹(vs2005文件夹是我自己创建的)。
图1 配置源代码和生成目录
然后单击左下方的“Configure”按钮,这时会弹出“cmake-gui”窗口,在“Specify the generator for this project”下拉菜单选择“Visual Studio 8 2005”、“Usedefault native compilers”后,单击“Finish”按钮,如图2所示。
图2 生成项目类型选择
完成以上操作后勾选“BUILD_EXAMPLES”、“CUDA_BUILD_CBUIN”、“CUDA_VERBOSE_BUILD”、“WITH_TBB”和“WITH_CUBLAS” 、“WITH_CUDA”,注意这里千万不要勾选“CUDA_BUILD_EMULATION”选项,不然会报错的,如下所示。
这是因为在从CUDA 4.0开始NPP(NVIDIA Performance Primitives library,英伟达基本性能库)就是CUDA tookit的一部分面不再单独提供了。
配置tbb相关目录(包含目录、可执行目录和库目录),详情参考本人博文:使用OpenCV-2.4.0.exe文件编译x86或x64平台Visual Studio2005/2008/2010目标文件。这里不再赘述。
单击“Configure”按钮,所有红色行已经变为白色,在下方的信息我们会看到如下信息:
特别注意,有两条为“Use TBB: YES (ver 4.0 interface 6004)”和“Use Cuda: YES (ver 4.2)”的字样,证明我们已经将intel tbb和CUDA正确配置。
最后点击Generate,下方的信息里面会有一条为“Generating done”的字样(如图3所示),而且我们已经成功生成项目文件(如图4所示)。
图3 “Generating done”
图4 成功生成项目文件
说明:由于第二、第三和第四部分与本人另一篇博文:使用OpenCV-2.4.0.exe文件编译x86或x64平台Visual Studio2005/2008/2010目标文件完全相同,只不过编译时需要相当长的时间,这里不再赘述。
以上是转载的内容,这里要说几个需要注意的地方:
1.本文中采用的是Cmake2.8.8版本,我用过2.8.12就会出现过很多本文中未提到的错误;
2.上文中提到的CUDA_BUILD_CBUIN”、“CUDA_VERBOSE_BUILD(好像是这些),有些其实在Cmake配置和生成的过程中是找不到的,不过这并不影响结果,可以忽略;
3.关于tbb路径下x86和x64版本lib的选择问题:如果你的vs是32位的就选择x86的库,否则选x64的库;
4.将编译好的头文件、库等加载到程序中时,注意要使用编译的Release版本(形如:"opencv_gpu243.lib",243后没有d的就是Release版本,有的就是Debug版本),否则会产生“应用程序无法正常启动0xc000007b”的错误;