OPENCV2.4.9+CUDA6.5+VS2013 64位系统环境搭建

来源:互联网 发布:查看php编译参数 编辑:程序博客网 时间:2024/05/29 02:45

我主要是参照英文的网址进行配置的https://initialneil.wordpress.com/2014/09/25/opencv-2-4-9-cuda-6-5-visual-studio-2013/#comment-115 为了方便大家,我将文件上传到百度云,同时加了自己的补充。

ps:小弟我因为这个前前后后搞了好几次,泪奔啊。



准备阶段

1.Cmake 链接:http://pan.baidu.com/s/1pJ61edX 密码:gypv
2.cuda6.5 链接:http://pan.baidu.com/s/1jGzjFmQ 密码:lvxx
3.vs2013 链接:http://pan.baidu.com/s/1mg23ydU 密码:vhyr
4.opencv源文件 链接:http://pan.baidu.com/s/1hqAIZXE 密码:xv4i
5.intel tbb库 链接:http://pan.baidu.com/s/1hqeUYMC 密码:u4es


需要安装好cuda6.5,推荐看官方安装说明,或者看网上的方法,很简单,这里不详细说明。(请原谅)
可以去此网址查看你的显卡是否支持CUDA https://developer.nvidia.com/cuda-gpus#collapse4
如此页面,选择你的显卡类型,如我的是GeFore GT 730m,就要选择GeForce

配置阶段

1.解压opencv-2.4.9
解压tbb,并将其bin目录D:tfilestbb41_20130613oss\bin\intel64\vc12添加到环境变量中
 
2.Cmake配置

 ① 如上图为你解压opencv的文件目录
    你要把生成的文件放在哪(我放在了新建的build-vs2013文件夹里)
       记住要勾选 Advanced
点击Configure,选择 ‘Visual Studio 122013 Win64,其它不要动,单击Finish

取消 ‘BUILD_DOCS’ 和 ‘BUILD_EXAMPLES
        取消 ‘CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE’
        选上 ‘WITH_CUBLAS’, ‘WITH_CUDA’, ‘WITH_OPENGL’, ‘WITH_TBB’
        点击 Configure

③添加环境变量path,这里不详细介绍,不知道请百度。
将tbb解压的目录D:\tfiles\tbb43_20150424oss\include(这是我的目录)添加到path中,注意前面要有分号。

点击Configure
④添加环境变量pathD:\tfiles\tbb43_20150424oss/lib/intel64;(这是我的目录,请根据自己的目录进行添加)

 
将TBB_LIB_DIR文件路径改为上图所示(一般加个vc12)
⑤点击Generate 完成Cmake的配置

3.生成阶段
① 打开‘opencv-2.4.9\modules\gpu\src\nvidia\core\NCV.cu’加上 #include <algorithm>,否则生成时会有错误
②编译 OpenCV.sln
注意检查是否是在x64平台下

    如果 OpenCV,tbb中的某个安装在 C:\Program Files,那么你需要用管理员权限运行 vs2013 才行
先在Debug模式下编译
    建议先编译 *opencv_core* 和 ‘ opencv_gpu* (右键点击,点生成)。(我编译没有错误)
    右键点击 *ALL_BUILD*,再点生成
  之后在选择 *INSTALL*,右击生成,成功后会把文件放在install文件夹里,下图是我的
再切换到Release模式,重复以上操作,生成opencv_core,opencv_gpu,ALL BUILD,INSTALL。

生成过程中,可能会出现文件被修改,选择重新加载即可
(编译时间会比较长,最起码几个小时是有的,请不要着急,耐心等待。)


cuda项目opencv配置环境

1、打开vs2013,新建cuda项目,为vs2013配置OpenCV环境:选择属性管理器,

先后分别在DebugRelease上的Microsoft.Cpp.Win64.user,点击右键,属性,VC++目录:

包含目录D:\tfiles\opencv-2.4.9\build-vs2013\install\include

D:\tfiles\opencv-2.4.9\build-vs2013\install\include\opencv

D:\tfiles\opencv-2.4.9\build-vs2013\install\include\opencv2

2.可执行文件目录:D:\tfiles\tbb43_20150424oss\bin\intel64\vc12
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin

3.库目录D:\tfiles\opencv-2.4.9\build-vs2013\install\x64\vc12\lib
可以将D:\tfiles\opencv-2.4.9\build-vs2013\install\x64\vc12\bin目录下的dll文件复制到C:\windows\system32的文件夹中

(这是我自己的目录,请根据你的目录添加)


 

4.添加lib文件 属性页,链接器,输入,附加依赖项带有d的是Debug,以下是debug的,不带d的是Release版本的,大家应该知道

opencv_calib3d249d.lib

opencv_contrib249d.lib

opencv_core249d.lib

opencv_features2d249d.lib

opencv_flann249d.lib

opencv_gpu249d.lib

opencv_highgui249d.lib

opencv_imgproc249d.lib

opencv_legacy249d.lib

opencv_ml249d.lib

opencv_nonfree249d.lib

opencv_objdetect249d.lib

opencv_ocl249d.lib

opencv_photo249d.lib

opencv_stitching249d.lib

opencv_superres249d.lib

opencv_ts249d.lib

opencv_video249d.lib

opencv_videostab249d.lib


Release

opencv_calib3d249.lib

opencv_contrib249.lib

opencv_core249.lib

opencv_features2d249.lib

opencv_flann249.lib

opencv_gpu249.lib

opencv_highgui249.lib

opencv_imgproc249.lib

opencv_legacy249.lib

opencv_ml249.lib

opencv_nonfree249.lib

opencv_objdetect249.lib

opencv_ocl249.lib

opencv_photo249.lib

opencv_stitching249.lib

opencv_superres249.lib

opencv_ts249.lib

opencv_video249.lib

opencv_videostab249.lib



5.将D:\tfiles\opencv-2.4.9\build-vs2013\install\x64\vc12\bin(这是我的目录)加入到windows系统环境变量Path中,重启




见证奇迹的时刻到了,写个程序测试以下吧。

注意看看Debug配置管理器的选择是不是X64平台


功能应该是将彩图变成了灰图(处理的好像有点简单,但测试程序就是这个),我也不知道为什么变灰图要搞的这么复杂?知道的大神请告诉我一下,谢谢。
#include<stdlib.h>#include<device_launch_parameters.h>#include<cuda_runtime.h>#include<opencv2\opencv.hpp>#include<opencv2\gpu\gpu.hpp>int main(){int num_devices = cv::gpu::getCudaEnabledDeviceCount();if (num_devices <= 0){std::cerr << "There is no devoce" << std::endl;return -1;}int enable_device_id = -1;for (int i = 0; i < num_devices; i++){cv::gpu::DeviceInfo dev_info(i);if (dev_info.isCompatible()){enable_device_id = i;}}if (enable_device_id < 0){std::cerr << "GPU module isn't built for GPU" << std::endl;return -1;}cv::gpu::setDevice(enable_device_id);cv::Mat src_image = cv::imread("test.jpg");cv::Mat dst_image;cv::gpu::GpuMat d_src_img(src_image);//upload src image to gpucv::gpu::GpuMat d_dst_img;cv::gpu::cvtColor(d_src_img, d_dst_img, CV_BGR2GRAY);//////////////////cannyd_dst_img.download(dst_image);//download dst image to cpucv::imshow("test", dst_image);cv::waitKey(50000);return 0;}



有错误就问吧,我尽量解答。

参考网址:

http://blog.csdn.net/fengbingchun/article/details/9831837

http://tieba.baidu.com/p/3329042929



2 0