Windows7 64位机上,OpenCV中配置CUDA,实现GPU操作步骤
原文地址:http://blog.csdn.net/haorenka2010/article/details/24385955
按语:首先感谢http://blog.csdn.net/fengbingchun/article/details/9831837这个博主的原创方法,在这个基础上编译之后发现了很多问题,所以进行了改正,有了以下方法:
重新编译opencv
1、 查看本机配置,查看显卡类型是否支持NVIDIA GPU,本机显卡为NVIDIA GeForce GT630;
2、 从http://www.nvidia.cn/Download/index.aspx?lang=cn下载最新驱动并安装;
3、 从https://developer.nvidia.com/cuda-toolkit根据本机类型下载相应最新版的CUDA Toolkit6.0 64位,安装,并通过样本程序验证其安装正确;
4、 将C:\ProgramFiles\NVIDIAGPU Computing Toolkit\CUDA\v6.0\bin添加到环境变量中(检查是否已经默认添加);
5、 从http://threadingbuildingblocks.org/下载最新版的TBB4.2,解压缩,并将其bin目录D:\soft\OpenCV2.4.8\TBB\tbb41_20140122oss\bin\ia64\vc10添加到环境变量中,注销或重启;
6、 从http://opencv.org/downloads.html 下载最新版本的OpenCV2.4.6,并解压缩到D:\soft\OpenCV2.4.8文件夹中;
7、 从http://www.cmake.org/cmake/resources/software.html下载最新版本的CMake2.8.11.2并安装;
8、打开CMake,在Where isthesource code:中选择D:\soft\OpenCV2.4.6\opencv文件夹,在Where to buildthe binaries:中选择D:/soft/OpenCV2.4.6/vs2010_GPU文件夹,此文件夹为手动创建;
9、点击Configure按钮,在弹出的对话框中选择VisualStudio 10,然后点击Finish;
10、 如果有红色框出现,勾选BUILD_EXAMPLES、WITH_TBB、WITH_CUBLAS、WITH_CUDA、WITH_CUFFT,然后再次点击Configure按钮;
11、如果还有红色框出现,TBB_INCLUDE_DIRS,将其值改为D:\soft\OpenCV2.4.6\TBB\tbb41_20130613oss\include为TBB中include所在的目录,然后再次点击Configure按钮;
12、 如何还有红色框出现,TBB_LIB_DIR、TBB_STDDEF_PATH,再次点击Configure按钮;
13、如果在下方信息框中有:Use TBB: YES(ver 4.1 interface 6105),Use Cuda: YES(ver5.0),证明我们已经将inteltbb和CUDA正确配置;
14、点击Generate按钮,此时会在D:\soft\OpenCV2.4.6\vs2010_GPU文件夹下生成OpenCV.sln文件;
15、以管理员身份,使用vs2010打开OpenCV.sln文件,选择View--> Properties Manager-->分别选中ALL_BUILD中的Debug和Release上的Microsoft.Cpp.Win64.user,依次添加inteltbb和CUDA 的Executable Directories、IncludeDirectories和Library Directories,点击右键-->Properties:
(需要说明的是:opencv里面要选择build文件夹下面的路径才对)
VC++ Directories,IncludeDirectories:
D:\soft\OpenCV2.4.6\TBB\tbb41_20130613oss\include
C:\Program Files\NVIDIAGPU ComputingToolkit\CUDA\v5.0\include
D:\opencv\build\include
D:\opencv\build\include\opencv
D:\opencv\build\include\opencv2
Library Directories:
D:\soft\OpenCV2.4.6\TBB\tbb41_20130613oss\lib\ia64\vc10
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib\Win64
D:\opencv\build\x64\vc10\lib
Executable Directories:
D:\soft\OpenCV2.4.6\TBB\tbb41_20130613oss\bin\ia64\vc10
C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v5.0\bin
D:\opencv\build\x64\vc10\bin
16、选中modules中的opencv_gpu,点击右键,选择Properties-->Linker-->Input-->IgnoreSpecificDefault Libraries加入libcmtlibcmtd;(可忽视这条)
17、 分别在Debug和Release下,选择SolutionExplorer里的Solution OpenCV,点击右键,运行”Rebuild Solution”。(这个过程比较漫长,win7 64位,4GB内存,大概需要3小时)
18、点击CMakeTargets下的INSTALL—右键—仅本工程build,之后会在D:\soft\OpenCV2.4.3\vs2010\install文件夹下的bin文件夹中存放相应的动态库,在lib文件夹下存放相应的静态库;
补充说明
(1)、安装CUDA Toolkit时最好不要修改其默认的安装目录;
(2)、第17步的重建过程中,如果出现了很异常诡异的行为,有一种调试方式是删除原先配置的文件夹,重新cmake,清空VS2010里面的工程,重新编译,可能会改善。
(3)、为了缩短编译时间,可以通过CMake中改变CUDA_ARCH_BIN、CUDA_ARCH_PTX值进行设置,将BUILD_EXAMPLES的勾选去掉(没有这么做,因为是为了全部编译)
(4)、安全卫士和杀毒软件关闭;
(5)、也可不用管理员身份打开OpenCV.sln,第15步的属性配置在不同的电脑上有的必须的,有的可以不需要,最好都加上,免得返工;
(6)、也可以不用修改opencv_gpu模块的属性配置,默认即可,即第16步也不是必须的;
(7)、编译过程中会弹出数次对话框,如出现宏对话框则点击Cancel选项,其它则选择Yes选项;
(8)、编译成功后的库也可以直接应用于OpenCV中的OpenCL模块。
Debug过程
编译错误解决:
1、无法加载宏: C:/Users/XXX/Documents/Visual Studio 2010Projects/VSMacros80/ Samples/ Samples.vsmacros
解决方法:
把这个附件放在上述目录里面:附件
2、错误:
CMakeFiles/example_gpu_driver_api_multi.dir/driver_api_multi.cpp.o: Infunction `destroyContexts()':
driver_api_multi.cpp:(.text._Z15destroyContextsv+0xc): undefined referenceto `cuCtxDestroy_v2'
driver_api_multi.cpp:(.text._Z15destroyContextsv+0x1c): undefinedreference to `cuCtxDestroy_v2'
CMakeFiles/example_gpu_driver_api_multi.dir/driver_api_multi.cpp.o: Infunction `Worker::operator()(int) const':
driver_api_multi.cpp:(.text._ZNK6WorkerclEi+0x19): undefined reference to`cuCtxPushCurrent_v2'
driver_api_multi.cpp:(.text._ZNK6WorkerclEi+0x6bf): undefined reference to`cuCtxPopCurrent_v2'
解决方法:
Only two example will affect by this bug,"example_gpu_driver_api_multi" and"example_gpu_driver_api_stereo_multi"
Modify line 39
target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS}${OPENCV_GPU_SAMPLES_REQUIRED_DEPS})
to
target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS}${OPENCV_GPU_SAMPLES_REQUIRED_DEPS} cuda)
in "opencv-2.4.6.1/samples/gpu/CMakeLists.txt" can easily fixthis problem
3、错误:dllmain重复定义,opencv_world246.dll不存在等错误
解决方法:cmake的时候不要勾选build_world选项,这个重建也不是必须的
4、错误37374error LNK1104:无法打开文件“..\..\lib\Debug\opencv_superres248d.lib”D:\opencv\opencv248GPU\modules\superres\LINKopencv_test_superres
分析:是链接库链接不上造成的,添上这些库就可以了。
解决办法:第15步中务必把opencv的include\bin\lib目标都加进去,而且是build目录下的,如果还有问题,那么重新cmake,或者清除VS2010的缓存就可以了。
5、错误
Unable to cast COM object of type'System.__ComObject' to interface type 'EnvDTE.DTE'.
解决办法:可能是这个或者可以放在这里不解决,继续编译可以没有问题
The exception seems to indicate the crashwas caused due to an interface not being found. This indicates thatsomething's wrong with proxy/stubs on the machine. At leastIServiceProvider is failing. IE is usually the owner of the IServiceProviderproxy.
From the dump, it showed devenv.exe process crashed shortly afterloading: C:\Windows\SysWOW64\actxprxy.dll andC:\Windows\System32\mssprxy.dll
The issue turned out to be brokenregistration for IServiceProvider. The proxy-stub CLSID was wrong (it wasreferring to actxprxy.dll instead of ieproxy.dll on Windows 7 x64). Registeringieproxy.dll from an elevated cmd prompt resolved the issue. regsvr32 "C:\Program
Files (x86)\Internet Explorer\ieproxy.dll"
On x86 systems, regsvr32"C:\Program Files\Internet Explorer\ieproxy.dll"
新编译的opencv使用方法
1、打开vs2010,新建一个控制台应用程序,为vs2010配置OpenCV环境:选择View-->Properties Manager-->分别选中Debug和Release上的Microsoft.Cpp.Win64.user,点击右键-->Properties:VC++ Directories,Include Directories:D:\Soft\OpenCV2.4.6\vs2010_GPU\install\include;D:\Soft\OpenCV2.4.6\vs2010_GPU\install\include\opencv;D:\Soft\OpenCV2.4.6\vs2010_GPU\install\include\opencv2;Library
Directories:D:\Soft\OpenCV2.4.6\vs2010_GPU\install\lib;
2、选中工程-->Properties-->Configuration Properties-->Linker-->Input-->AdditionalDependencies:Debug和Release,添加相应的.lib库;
3、将D:\soft\OpenCV2.4.6\vs2010_GPU\install\bin加入到windows系统环境变量Path中,重启。(也可以将install文件夹全部拷贝出来,作为一个新的opencv版本存在,里面应该包括include\bin\lib这个几个主要目录)
4、示例如下,如果iDevicesNum结果非0,说明安装配置正确。
1. #include "stdafx.h"
2. #include <opencv2/opencv.hpp>
3. #include <opencv2/gpu/gpu.hpp>
4.
5. using namespace cv;
6. using namespace cv::gpu;
7.
8. int_tmain(int argc, _TCHAR* argv[])
9. {
10. int iDevicesNum = getCudaEnabledDeviceCount();
11.
12. cout<<iDevicesNum<<endl;
13.
14. return 0;
15.}
参考文献
1、 http://opencv.willowgarage.com/wiki/OpenCV_GPU
2、 http://docs.opencv.org/modules/gpu/doc/introduction.html
3、 http://wenku.baidu.com/view/81e29c6f011ca300a6c390dd.html
4、 http://blog.cuvilib.com/2011/03/22/how-to-build-opencv-2-2-with-gpu-cuda-on-windows-7/
5、 http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-microsoft-windows/index.html
Windows7 64位机上,OpenCV中配置CUDA,实现GPU操作步骤的更多相关文章
- Windows7 64位机上Emgu CV2.4.2安装与配置
Windows7 64位机上Emgu CV2.4.2安装与配置 分类: Emgu CV 2012-11-28 17:22 92 ...
- windows7 64位机上配置支持GPU版(CUDA7.5)的OpenCV2.4.13操作步骤
很久之前在windows7 32位上配置过GPU版的opencv,可参考http://blog.csdn.net/fengbingchun/article/details/9831837 Window ...
- windows7 64位机上安装配置CUDA7.5(或8.0)+cudnn5.0操作步骤
按照官网文档 http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#axzz4TpI4c8v ...
- Windows7 64位安装配置Apache2.4+PHP5.4+MySQL5.5+Xdebug
PHP更新已经到了5.4.7了,之前是用PHPstudy安装的PHP5.2.13版本,今天有空,就把之前的集成安装卸载了.换上了新一代PHP,记录一下.. 环境:Windows7 64位(内部版本76 ...
- Windows7 64位配置ODBC数据源(Sybase)的方法
Windows7 64位配置ODBC数据源(Sybase)的方法 操作步骤: 1,通过“控制面板->ODBC(32位)”进入ODBC数据源管理器,如下图: 假如没找到“ODBC(32位)”,则可 ...
- win10 64位专业版系统中显示32位dcom组件配置的方法
word.excel是32位的组件,当用户64位系统在运行窗口中输入dcomcnfg命令时,在打开的组件服务管理窗口,是找不到Microsoft Excel.word程序的.另外,Windows 环境 ...
- windows7,windows8 64位系统 IIS7.0配置.net网站时报错:未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。
背景: 在64位的操作系统中, IIS7.0配置.net网站时报错:未能加载文件或程序集“XXX”或它的某一个依赖项.试图加载格式不正确的程序. 解决办法: 把iis 对应的应用程序池 --高级设置- ...
- Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)
Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...
- Ubuntu14.04 64位机上安装cuda8.0 cudnn5.0操作步骤 - 网络资源是无限的
查看Ubuntu14.04 64位上显卡信息,执行: lspci | grep -i vga lspci -v -s 01:00.0 nvidia-smi 第一条此命令可以显示一些显卡的相关信息:如果 ...
随机推荐
- for循环创建文件夹
bash里面, for n in a b c; do mkdir $n/dir; done 这个会在a,b,c三个文件夹下创建一个名为dir的文件夹. 之前没有在语句后面加分号,导致在cmd界面提交不 ...
- 【SSH系列】Hibernate映射 -- 继承映射
开篇前言 在前面的博文中,小编介绍了hibernate中的映射,一对一,一对多,多对多,单向,双向等,今天这篇博文,小编主要来介绍一下hibernate中的继承映射,小伙伴都知道在C#中,如果想要实现 ...
- Ajax 异步加载
AJAX (Asynchronous JavaScript and XML,异步的 JavaScript 和 XML).它不是新的编程语言,而是一种使用现有标准的新方法,是在不重新加载整个页面的情况下 ...
- 理解性能的奥秘——应用程序中慢,SSMS中快(3)——不总是参数嗅探的错
本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(2)--SQL Server如何编译存储过程 在我们开始深入研究如何处理 ...
- [csdn markdown]使用摘记二 快捷键及导入导出Markdown文件
csdn推出了新的编辑器markdown,对于习惯使用离线编辑的人员来说是个大的福利,比如上班的时候,不能联网,但是又有好些知识点需要记录,等到下班了呢,又想直接把这些排版格式良好的文件直接上传到cs ...
- #pragma pack(x) CPU对齐
编译器会尽量把成员对齐以提高内存的命中率.对齐是可以更改的,使用"#pragma pack(x)" 可以改变编译器的对齐方式. C++固有类型的对界取编译器对齐方式与自身大小中较小 ...
- RxJava操作符(08-条件和布尔操作)
转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51671826 本文出自:[openXu的博客] 目录: All Amb Contains D ...
- Xcode8之后,苹果列出了最新App被拒十大原因
开发者在开发应用程序之前,熟悉苹果审核应用的技术.内容以及设计准则是非常重要的,可以大大降低应用审核被拒的可能性. 最近,苹果通过一个专门的页面给出了截止2016年10月10日应用提交审核被拒的十大原 ...
- 【Netty源码解析】NioEventLoop
上一篇博客[Netty源码学习]EventLoopGroup中我们介绍了EventLoopGroup,实际说来EventLoopGroup是EventLoop的一个集合,EventLoop是一个单线程 ...
- 4.3、Android Studio突破64K方法限制
当应用代码和库代码代码超过64K限制时,早期版本的构建系统会出现如下提示: Conversion to Dalvik format failed: Unable to execute dex: met ...