重新编译Opencv:Opencv3.2.0+CUDA7.5+VS2013+Cmake3.8+Quadro K620显卡+Win7系统

项目说明:因为我要用opencv里的GPU模块,加速Sift图像拼接算法。所以开始了“参无人寰”的opencv重新编译。一下内容折腾我将近20天,特此记录,献给同样是菜鸟的我们,以防走弯路。

首先说明:(1)因为要用cuda,所以电脑上必须要有,英伟达的显卡,AMD的不行;

                    (2)因为要用opencv,而下载的opencv预编译版并没有把cuda编译进去,所以需要下载opencv源码自己编译;

                    (3)如果要编译opencv的cuda 库,只能用VS 编译器。

特别提醒:cuda,Vs,Opencv,这三个可不是随便安哪个版本就安哪个版本。需要互相匹配的。之前不知道这些,闭着眼睛瞎安装,害我捣鼓了半个月,白忙活了!


1、  首先查看自己的显卡是否支持cuda:

        点击“计算机”->管理->设备管理器->显示适配器:可以看到我的显卡型号是Quadro k620



       然后,进入官网https://developer.nvidia.com/cuda-gpus,找到下面的图标,点击进入


     可以看到有我的显卡的型号,如下图所示,


    这就说明我的显卡支持cuda。并且计算能力达到5.0.

 

2、  查看显卡支持的cuda版本:

        在桌面空白地方“右击”->找到Nvidia控制面板->点击左下角的“系统信息”,选择“组件”,如下图

 

     其中,NUCUDA.DLL一行就是我的显卡能够支持的cuda的最高版本。

  (最开始,我的驱动是353.*,对应的最高版本是7.5.18。所以我安装的是cuda7.5。后来我升级了驱动到385.9,对应的最高版本就成了9.0了。下载驱动网      址http://www.nvidia.cn/Download/index.aspx?lang=cn 。进入网址,查找信息如下


    点击搜索,下载后安装,就升级了驱动。


3、  安装cuda7.5.18:

       版本下载网址 https://developer.nvidia.com/cuda-toolkit-archive,这个地址我找了很久也没找到,这是一个大牛提供的。按照默认的安装方式安装下去就行了。就算你指定 要安装到D盘,它也是安装在C盘,强制的。


      检查cuda toolkit安装是否正确:在运行里输入cmd命令,运行指令“nvcc -V”,如下图就说明安装正确了。


 

4、  安装TBB:

        TBB是微软的并行处理软件,我觉得是为了让cuda的并行处理能够在win上跑。有人说需要,有人说不需要,我也不太明白,所以我还是安装了。先别着急安装VS。因为T B版本不同,支持的VS版本也不同。所以需要根据你下载的TBB再去安装VS。

        TBB下载地址:https://www.threadingbuildingblocks.org/download。我下载的tbb44_20160128oss_win_0,里面版本有VC14对应VS2015,VC12对应VS2013.

        TBB不用安装,下载下来就能使。把bin的绝对路径添加到系统的环境变量里。我的路径是:D:\tbb44_20160128oss_win_0\tbb44_20160128oss\bin\intel64\vc12。

        如果想检测TBB是否按照正确,可以根据这个微博练习:http://blog.csdn.net/dwosion/article/details/72724371

 

5、  安装Vs2013:

        VS2015及以上版本更适合win10系统,Vs2013以下版本更适合win7系统,VS2013貌似是介于win7向win10过渡的软件。所以综合TBB和我的系统,我选择安装VS2013.安装过程也选默认方式就行了,这个安装路径可以指定到D盘。

 

6、  安装cmake :

       下载网址: https://cmake.org/download/。进入网址可以看到下面信息:



      上面那个是安装包,下载下来需要安装。下面那个是可执行包,下载下来就能使用。下载下面的就可以了。然后进入bin目录,我的是D:\cmake-3.8.0-rc1-win64-x64\bin。击cmake-gui运行打开界面。


      我这里有个大大的插曲,不知道我误操作了哪里,我的界面没有了下面的输出窗口,就是下面这张图。成功没成功也看不到,全屏那个绿色滚动条提示。不管我是重新下载,还是更换版本,都没有输出窗口。而且打开后都给自动加载了where to build the binaries的路径。感觉是cmake读取了C盘里的某个文件,最后也没找到cmake到底读取哪个文件,重装系统后就好了。

      

 

7、  下载opencv源码:

        下载源码也不是你随便想下哪个就下哪个的。首先要看你显卡的架构。

         Opencv2.4支持Fermi/Kepler/Auto架构的显卡;Opencv3支持Fermi/Kepler/Auto/Maxwell/Pascal架构的显卡。

        我的显卡是Quadro k620,架构是Maxwell.所以要想在我的显卡上编译opencv的cuda库。只能用opencv3。可是我还需要opencv2.4.9的nonfree的函数,所以我还要额外下载opencv_contrib库,这个就是2.4.9的nonfree里的东西搬到这里了。

 

        下载opencv3.2.0源码:https://www.opencv.org/releases.html。选“win pack”,点击进入,稍等片刻就出现下载窗口。确定即可。下载下来的文件解压后,有build和source两个文件,source文件就是我们要的源码。

 

        下载opencvcontrib库:https://github.com/opencv/opencv_contrib/tree/master。注意版本,我的opencv是3.2.0,所以下载的3.2.0版本的。在左侧的“Branch:master的“Tags”里选择版本。如下图所示

 

8、  开始真正的编译:

        上面都是准备工作,现在可以真正的开始编译OpenCV的cuda库了。

        打开cmake-gui:

      (1)Where is the source code:里添加opencv源码的路径

      (2)Where to build the binaries:里添加编译好的库要存放的路径

      (3)选中Advanced,否则cuda的有些信息,我们看不到。

      (4)取消BUILD_DOCS;CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE;

      (5)选中WITH_CUBLAS;WITH_CUDA;WITH_OPENGL;WITH_TBB;

      (6)CUDA_GENERATION里选中架构型号,我的是maxwell

      (7)OPENCV_EXTRA_MODULES_PATH,里添加opencvcontrib库的路径,我的是:D:/OpenCV320/opencv_contrib-3.2.0/opencv_contrib-3.2.0/modules

      (8)点击“Configure”,等待,如果出现红色,就查看红色区域里,我们需要的东西的路径是否都对,有的库根本不需要,说没找到,那就这么放着。有的库我们需要,但是说没找到,那就给他手动指定到我们安装的路径。有的库自动搜索路径,可能会不准确,没有搜到根儿上,就手动给他指定到精确位置,比如TBB的bin路径,可能会自动添加的D:\tbb44_20160128oss_win_0\tbb44_20160128oss\bin\intel64 ,但是在这里面有VC12,vc13等多个版本呢,所以应该重新指定到                D:\tbb44_20160128oss_win_0\tbb44_20160128oss\bin\intel64\vc12\。然后就等待直到出现configure done,并且没有弹出错误窗口。

      (9)点击“Generate”,等待,如果出现错误,就根据错误提示修正,再点击“Generate”,直到输出generatedone,并且没有错误出现。

     (10)点击“Open Project”,就进入了VS编译器。或者进入cmake的编译路径下找到opencv.sln文件,双击打开。

     (11)点击“ALL_BUILD”,选择“生成”,等吧,个把小时。记得把360关了,不然重视提示要不要安装。

       这里我经历了漫长的挫折,不一一列举了。在编译过程中,会输出好多的警告,这些可以忽略,只要没有错误就行。

       注意:如果提示有文件被修改,问是否重新加载,那就选“全部        重新加载”。报告是否重新加载的同时可能会报一些错误,比如cmd.exe,退出代码1等等。当重新加载完毕后,再点击“ALL_BUILD”,选择“生成”。错误就没了。

     (12)点击“INSTALL”,将编译好的放到install文件夹里。就可以使用了。



       错误记录1:***已经在window.obj里定义了。报错文件是window_w32。项目是opencv_highgui。

       解决办法:重新编译opencv_highgui,右击“重新生成”。如果还不行,就把整个编译都清理干净,然后先单独编译opencv_highgui,生成没问题了,再点击“ALL_BUILD”。就记住了这么一个错误!!!


      经验发现:只要版本匹配了,根本没那么多问题错误的。都是水到渠成的事!!!


      秀一下我的成果,

      

    哭炼狱般的经历,感谢上苍,让我成长!

     

 

 

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值