如何使用opencv的gpu模块.docx
《如何使用opencv的gpu模块.docx》由会员分享,可在线阅读,更多相关《如何使用opencv的gpu模块.docx(14页珍藏版)》请在冰豆网上搜索。
![如何使用opencv的gpu模块.docx](https://file1.bdocx.com/fileroot1/2022-11/16/62ba77e1-e025-4092-a506-295046c1f391/62ba77e1-e025-4092-a506-295046c1f3911.gif)
如何使用opencv的gpu模块
如何使用opencv的gpu模块
Email:
zhangping_bnu@
Blog:
本文主要讲述如何使OpenCV支持CUDA高速运算,有问题可以发邮件。
我们将要使用的工具除了常规编译方式使用的工具外,还要使用CUDAtookit和GPUComputingSDK,如本人使用的版本分别为cudatoolkit_4.2.9_win_64.msi和gpucomputingsdk_4.2.9_win_64.exe(我的电脑是64位系统),相关文件可以从官网下载。
下载完成后并安装,确保CUDASDK的bin目录(“C:
\ProgramData\NVIDIACorporation\NVIDIAGPUComputingSDK4.2\C\common\bin”)已经添加到环境变量中后,我们就开始编译支持CUDA高速运算的OpenCV。
一、生成项目文件
1.首先,我们将预使用的OpenCV-win源代码放置到指定目录
我在“C:
\ProgramFiles”目录下新建一个“OpenCV”目录,并在里面新建一个src目录并将OpenCV-win源码放置到该文件夹,目录结构如图1所示:
图1C:
\ProgramFiles\OpenCV\src内的目录结构
2.下载并安装配置inteltbb
这里我把inteltbb解压后的文件夹放置到“C:
\ProgramFiles”目录下(如图2所示),然后将inteltbb的bin目录添加到系统环境变量,在桌面上右击“计算机”,选择“属性-高级系统设置”,进入“高级”选项卡,“环境变量-系统变量”,如图3所示:
图2tbb40_20120408oss内的目录结构
图3系统环境变量
编辑“Path”变量,在最后添加inteltbb的bin(注意要深入到最内层目录,如Visual2005的话应该为“C:
\ProgramFiles\tbb40_20120408oss\bin\ia32\vc8”,VisualStudio2008应为“C:
\ProgramFiles\tbb40_20120408oss\bin\ia32\vc9”)目录所在全路径。
如我应该添加如下变量:
“C:
\ProgramFiles\tbb40_20120408oss\bin\ia32\vc8”,这里要注意的是变量之间是以分号“;”分隔的(玩过Linux的都知道Linux下系统变量之间是以冒号“:
”分隔的)。
修改完系统环境变量后,为使环境变量生效,需要注销一下电脑,或者重启“explorer.exe”进程即可,这里不过多赘述。
3.安装cmake,并生成项目文件
安装完cmake后,运行cmake,如图4所示,然后单击“Whereisthesourcecode:
”右侧的“BrowseSource”,浏览到“C:
/ProgramFiles/OpenCV/src”文件夹,单击“wheretobuildthebinaries:
”右侧的“BrowseBuild”,浏览到“C:
/ProgramFiles/OpenCV/vs2008”文件夹(vs2008文件夹是我自己创建的)。
图4配置源代码和生成目录
然后单击左下方的“Configure”按钮,这时会弹出“cmake-gui”窗口,在“Specifythegeneratorforthisproject”下拉菜单选择“VisualStudio82005”、“Usedefaultnativecompilers”后,单击“Finish”按钮,如图5所示。
图5生成项目类型选择
完成以上操作后的cmake界面如图6所示,这里勾选“BUILD_EXAMPLES”和“WITH_TBB”,“BUILD_EXAMPLES”、“CUDA_BUILD_CBUIN”、“CUDA_VERBOSE_BUILD”、“WITH_TBB”和“WITH_CUBLAS”、“WITH_CUDA”,注意这里千万不要勾选“CUDA_BUILD_EMULATION”选项
选项后单击“Configure”按钮后,“TBB_INCLUDE_DIRS”选项显示为红色,此处为cmake找不到inteltbb的包含文件所致。
图6勾选“BUILD_EXAMPLES”和“WITH_TBB”选项
将inteltbb里面的include文件夹路径(注意是include,不是include里面的子文件夹)定位到该配置属性的路径里,如图7所示。
图7配置inteltbb包含目录
再次点击Configure按钮,在TBB_LIB_DIR处又会出现红色一行,此处为inteltbb的库文件位置,此处必须将路径定位到含有LIB文件的位置,比如我的安装位置是“C:
/ProgramFiles/tbb40_20120408oss/lib/ia32/vc8”,也就是说,在lib文件夹下会有子文件夹,必须定位到子文件夹对应的vc版本文件夹里去,这里由于我们是以VisualStudio2005为例进行编译,所以我们选择vc8文件夹,ia32子文件夹是32位系统,此处应根据对应操作系统选择,如图8所示。
图8配置inteltbb库文件目录
然后,我们再次点击Configure,此时所有红色行已经变为白色,同时在下方的信息里面会有一条为“UseTBB:
YES”的字样,证明我们已经将inteltbb配置完毕。
同时:
在下方的信息我们会看到如下信息:
[plain] viewplaincopy
1.Other third-party libraries:
2. Use IPP:
NO
3. Use TBB:
YES (ver 4.0 interface 6004)
4. Use Cuda:
YES (ver 4.2)
5. Use Eigen:
NO
6.
7.NVIDIA CUDA:
(ver 4.2)
8. Use CUFFT:
YES
9. Use CUBLAS:
YES
10. NVIDIA GPU arch:
11 12 13 20 21
11. NVIDIA PTX archs:
11 12 13 20 21
12. NVIDIA GPU features:
11 12 13 20 20 20
特别注意,有两条为“Use TBB:
YES(ver4.0interface6004)”和“Use Cuda:
YES(ver4.2)”的字样,证明我们已经将inteltbb和CUDA正确配置。
最后点击Generate,下方的信息里面会有一条为“Generatingdone”的字样(如图10所示),而且我们已经成功生成项目文件(如图11所示)。
图10“Generatingdone”
图11成功生成项目文件
四、编译生成目标文件
完成后在刚创建的子文件夹C:
\ProgramFiles\OpenCV\vs2005下会出现一个vs2005的解决方案文件OpenCV.sln,双击打开后,出现OpenCV2.4的所有工程项目,先不要着急编译。
1.VisualStudio2005/2008
(1)配置VC++目录
说明:
由于本部分VisualStudio2005/2008和VisualStudio2010不太相同,这里我分别讲述VisualStudio2005和VisualStudio2010使用第一节中生成的项目文件编译生成目标文件。
(a)VisualStudio2005/2008下配置VC++目录
依次选择“工具-选项-项目和解决方案-VC++目录”(注意平台选择的是Win32),如图11所示。
图11VC++目录
依次添加inteltbb可执行路径、包含目录和库目录,这里的可执行路径与cmake前面cmake生成项目文件时的库目录类似,包含目录和库目录与前面cmake生成项目文件时的包含目录和库目录相同。
如这里vs2005的可执行路径为“C:
\ProgramFiles\tbb40_20120408oss\bin\ia32\vc8”,包含目录为“C:
\ProgramFiles\tbb40_20120408oss\include”,库目录为“C:
\ProgramFiles\tbb40_20120408oss\lib\ia32\vc8”。
配置完成后,单击“确定”按钮。
(b)VisualStudio2010下配置VC++目录
将选项卡切回到“属性管理器”,展开“ALL_BUILD-Debug|Win32-Microsoft.Cpp.Win32.user”后,右击选择“属性-通用属性-VC++目录”,如图12所示:
图12VC++目录
同样的,依次添加inteltbb可执行路径、包含目录和库目录,这里的可执行路径与cmake前面cmake生成项目文件时的库目录类似,包含目录和库目录与前面cmake生成项目文件时的包含目录和库目录相同。
如这里vs2010的可执行路径为“C:
\ProgramFiles\tbb40_20120408oss\bin\ia32\vc10”,包含目录为“C:
\ProgramFiles\tbb40_20120408oss\include”,库目录为“C:
\ProgramFiles\tbb40_20120408oss\lib\ia32\vc10”。
配置完成后,单击“确定”按钮。
(2)生成调试模式库
将选项卡切回到“解决方案资源管理器”,将编译模式切换为Debug模式,右键单击“解决方案OpenCV”,选择“重新生成解决方案”,这里我们可以依次选择“视图-其他窗口-错误列表”(vs2010为“视图-错误列表”)以观察编译过程是否有错误或者警告,有警告信息并不妨碍编译OpenCV,如图13所示。
图13选择Debug模式,“重新生成解决方案”
编译完成后再右键单击INSTALL项目,选择“生成”,如图14所示。
图14生成调试模式库
(3)生成发行模式库
将编译模式切换为Release模式(如图15所示),重复Debug模式下的步骤。
完成后在你的解决方案文件夹“C:
\ProgramFiles\OpenCV\vs2005”里面会生成install目录,该目录下包含我们编程时需要的可执行文件、包含文件和库文件等。
图15选择Release模式,重新生成解决方案
特别注意:
一定不要忘记右键单击INSTALL项目,选择“生成”。
五、整理目录
上面我们将OpenCV-2.4.0分别编译成vs2005、vs2008(由于这个操作与vs2005完成相同,上文略去)和vs2010(与vs2005操作相同部分略去)目标文件,为使我们编译的目标文件与OpenCV官方网站发布的build目录结构相同。
我们要进行如下操作:
1.新建一个