Win64平台CUDA6.5+VS2010+opencv2.4.8配置

来源:互联网 发布:ubuntu华屏 编辑:程序博客网 时间:2024/05/19 03:43

搞了3天,终于将CUDA+opencv+VS2010的环境搞好了。真是非常坎坷,现将配置步骤记录如下。

笔记本上的显卡为NVIDIA GeForce GTX850M,计算能力为5.0(查询显卡计算能力:https://developer.nvidia.com/cuda-gpus)

开始使用的是CUDA7.0配置,发现cmake后生成的VS解决方案编译后无法生成相应的lib和dll文件,报好多错误,这是显然不可以的。我猜想可能的原因是由于CUDA7.0对opencv要求的版本较高。我的opencv2.4.8跟不上了。

然后换CUDA6.0,这次cmake后生成的VS解决方案编译后可以生成相关的lib和dll文件。也可以正常的在GPU上进行计算,但是,CPU像GPU传输数据的时候特别慢,且最后使用opencv的显示函数如imshow和cvImageshow都无法正常使用,报错如下:



最后使用CUDA6.5版本进行配置,成功。下面为具体步骤:

1.在官网下载CUDA6.5版本,安装。安装时默认路径最好不要修改。安装完成后,会在系统环境变量中自动添加CUDA Toolkit的环境变量。CUDA6.5中集成了配套的显卡驱动,CUDA Toolkit,CUDA samples,如果之前有安装显卡驱动,不必卸载,安装CUDA6.5时会自动替换驱动;

2.将opencv2.4.8下载解压。我的路径为D:\opencv2.4.8;

3.下载Intel TBB4.3,安装,并将TBB4.3的bin目录添加到环境变量中,我的为D:\tbb43_20150316oss_win\tbb43_20150316oss\bin

4.下载cmake3.1.3安装。在cmake中在where is source code中选择编译的源文件路径:在where to build the binaries中选择编译后的存储文件夹,VS2010是我自己建的


点击configure,之后会出现平台选择,我的是选择Visual Studio 2010 win64,点击finish

5.出现的一片红色中,勾选BUILD_EXAMPLES,WITH_CUDA,WITH_TBB,WITH_CUBLAS,WITH_OPENGL,为了加快编译速度,在CUDA_ARCH_BIN修改为3.0 3.5 5.0(该选项是根据GPU计算能力来选择的,我的计算能力为5.0),如果不修改的话,默认要编译好多个版本。CUDA_ARCH_PTX修改为5.0(确定虚拟的PTX版本)。

6.再次点击configure,出现TBB路径未找到的问题,(红色标出),点击确定TBB的路径,我的为D:\tbb43_20150316oss_win\tbb43_20150316oss\include,再次点击configure,出现的红色两条要求配置TBB的lib路径和一个头文件的路径,默认已经找到,再次点击configure,若没有红色出现,且信息框中出现使用CUDA,TBB等信息后,再点击Generate,会在目标路径中生成OpenCV.sln文件,点击打开该文件

7.确定VS2010的状态为Debug x64,在视图--->属性管理器中找到ALL_BUILD,在Microsft.Cpp.x64.user中双击,选择VC++路径,


在可执行文件目录中,将

TBB的bin路径:D:\tbb43_20150316oss_win\tbb43_20150316oss\bin\intel64\vc10

CUDA的bin路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin添加


在包含目录中,将

TBB包含目录:D:\tbb43_20150316oss_win\tbb43_20150316oss\include

CUDA包含目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include添加


在库目录中,将

TBB的库目录:D:\tbb43_20150316oss_win\tbb43_20150316oss\lib\intel64\vc10

CUDA的库目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\lib\x64添加



配置好后,切回解决方案资源管理器中,在解决方案‘OpenCV’中,右击,重新生成解决方案,接下来开始了漫长的等待过程。在编译gpu模块时非常的慢。整个过程耗时要几个小时


等编译完成后,在CMakeTargets文件夹下的INSTALL中,右击,选择生成选项,注意不要选错了!又是一个漫长的等待过程。这个过程完成后,就完成了debug模式下的lib和dll文件的生成。会在install文件夹下的x64文件夹中:D:\opencv2.4.8\VS2010\install\x64\vc10

这时候可以先不急着编译release模式,你可以先验证一下debug模式下的编译是否正确。

将自己编译生成的dll文件的目录添加到环境变量中:D:\opencv2.4.8\VS2010\install\x64\vc10

之后,新建一个VS2010项目,在该项目中,将自己编译好的opencv的lib文件配置添加进去,

在debug x64模式下,VC++目录中配置包含目录:

D:\opencv2.4.8\VS2010\install\x64\vc10

D:\opencv2.4.8\VS2010\install\include\opencv

D:\opencv2.4.8\VS2010\install\include\opencv2

在库目录中添加:

D:\opencv2.4.8\VS2010\install\x64\vc10\lib

编写源文件,运行。测试程序如下:

#include <iostream>#include "opencv2/opencv.hpp"#include "opencv2/gpu/gpu.hpp"int main (int argc, char* argv[]){try{cv::Mat src_host = cv::imread("C:\\Users\\Public\\Pictures\\Sample Pictures\\Desert.jpg");cv::gpu::GpuMat dst, src;cv::Mat result_host;src.upload(src_host);cv::gpu::cvtColor(src,dst,CV_BGR2GRAY);cv::gpu::threshold(dst, dst, 128.0, 255.0, CV_THRESH_BINARY);dst.download(result_host);//cv::Mat result_host = dst;cv::imshow("Result", result_host);cv::waitKey();}catch(const cv::Exception& ex){std::cout << "Error: " << ex.what() << std::endl;}//cv::imshow("result",src_host);//cv::waitKey();return 0;system("pause");}

运行后结果:



说明debug模式下配置正确,接下来可以配置release模式,方法同上,注意将平台切换为Release x64即可。

需要注意的是,在编译过程总,如果出现关于宏的对话框,选择cancle,其他的对话框点击yes,要求重新加载的忽略

0 0
原创粉丝点击