Cuda 5.5 + Qt5 + opencv 2.4.8 使用cmake+vs2012编译GPU加速的opencv

原创 2014年03月03日 21:08:19

花了4天终于编译完成,各种错误各种google,写下来以助后人。

一、生成解决方案


1、安装cmake、opencv、tbb、cuda 、qt5。注意cuda、qt5的版本和操作系统。


2、打开cmake,设置源代码和编译的二进制文件的目录;编译过程需要足够的存储空间,大概13G左右,所以要确保二进制文件目录所在磁盘足够大。


点击“configure”,选择相应的编译器;


3、勾选BUILD_EXAMPLES WITH_TBB WITH_CUDA WITH_Qt 再Configure(注 建议勾选 WITH_CUBLAS ,据称有时不勾选该项会出错)
出现下图(怀疑是我没配置QT路径问题),不出现则跳过,出现则配置


qmake在如下路径中
其余都在C:/Qt/Qt5.2.1/5.2.1/msvc2012_64/lib/cmake/目录下,点击configure
出现


Qt5OpenGL也在目录C:/Qt/Qt5.2.1/5.2.1/msvc2012_64/lib/cmake/内
TBB_INCLUDE在tbb目录下:C:/tbb/include,再次configure
无红色选项时,表示configure成功。

4、由于这样直接生成的解决方案需对不同的GPU架构分别编译,编译时间过长(数小时),
建议针对所用显卡进行配置(据称可达原时间六分之一):
找到如下两项


清空CUDA_ARCH_PTX,将CUDA_ARCH_BIN中仅保留所需GPU架构,
确定所需架构,请查询https://developer.nvidia.com/cuda-gpus
重新configure。(建议使用以上方法先编译一边,确定没有错误,再为所有架构重新编译,花了四天的时间得到的教训)
点击“Generate”,进行生成,出现大片警告,不必理会。



二、编译解决方案


1、在目标文件夹中打开OpenCV.sln,配置ALL_BUILD项目属性


配置tbb的目录:
可执行文件目录 C:\tbb\bin\intel64\vc11
包含目录 C:\tbb\include
库目录 C:\tbb\lib\intel64\vc11

2、有时编译后会出现 LNK error 找不到 python27_d.lib 问题(我们使用的编译好的python不提供 _d.lib文件),建议编译前配置好。
 
在外部依赖项中找到pyconfig.h ,并修改代码

 将pragma comment(lib,"python27_d.lib")改成pragma comment(lib,"python27.lib")
再找到


将其用/**/屏蔽, 这样就可以了。
有文章说也可以直接到libs文件夹中将python27.lib 复制一个叫做python27_d.lib文件的放在libs目录下 (尝试不行,不知道原因)


3、有时还会出现无法打开python27.lib,将C:\python27\libs加入bindings文件夹中opencv_python项目的库目录。


4、我编译后对于opencv-stitching 出现如下错误:
1>D:\program files\VS2012\VC\include\xmemory0(605): error C3859: 超过了 PCH 的虚拟内存范围;请使用“-Zm110”或更大的命令行选项重新编译
 1>D:\program files\VS2012\VC\include\xmemory0(605): fatal error C1076: 编译器限制 : 达到内部堆限制;使用 /Zm 指定更高的限制

解决:选择modules文件夹中opencv-stitching项目属性-》配置属性-》C/C++-》命令行 
添加 /Zmnumber,如/Zm1000
其中number是自己想要指定的比例系数;  
  可以指定的值是:10,100,200,1000,2000,对应的memory alloction是5.0M,50MB,100MB,500MB,1000MB; 
建议编译前设置好,直接设置为/Zm2000 ,以免浪费时间。

nonfree和superres项目也可能会出现该问题,可设置后对ALL_BUILD项目再次生成项目。


5、有文章说要修改opencv-gpu的运行库,改为/MT和/MTD,我的情况是修改后debug版本没问题,release版本出错
后来重新生成解决方法不再修改,没有出错。

6、生成解决方案,大概有3万多警告,不必理会。完成后对 CMakeTargets文件夹下INSTALL项目生成。


对于解决方法分别以debug和release下分别进行进行上述步骤,得到lib和dll文件。


三、整理


我们可以将编译结果打包以备以后使用,即得与OpenCV官网目录结构相仿的OpenCV函数库;
观察文件名我们可以发现,无论可执行文件还是库文件有些文件最后有个字母“d”,而有些文件则没有,这是为了辨别调试模式与发行模式生成的文件,不能调试的朋友要特别注意这一点。


参考:http://answers.opencv.org/question/5090/why-opencv-building-is-so-slow-with-cuda/
http://mmcheng.net/%E5%9C%A8%E4%BD%BF%E7%94%A8cuda%E5%92%8Cqt%E9%80%89%E9%A1%B9%E4%B8%8B%E7%BC%96%E8%AF%91opencv/
http://blog.csdn.net/quanquanyu/article/details/8917765
http://blog.csdn.net/quanquanyu/article/details/8917765
http://blog.csdn.net/shuxiao9058/article/details/7526795


Ubuntu14.04 x64 qt集成cuda开发

Ubuntu14.04 x64 qt集成cuda开发 系统环境 1:ubuntu 14.04.4 LTS 64位 2:显卡GTX 720 3:cuda_7.5.18_linux.run 环境确认 ro...
  • boss111
  • boss111
  • 2016年04月11日 14:31
  • 1336

用 cmake 构建Qt工程(对比qmake进行学习)

cmake vs qmake qmake 是为 Qt 量身打造的,使用起来非常方便cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能 内置的 out-of source...
  • Bruce_0712
  • Bruce_0712
  • 2016年12月11日 17:29
  • 1357

Qt pro文件使用

Qt中使用的工程文件(.pro文件) 第一种常用方式: #模块设置,一般设置为app(生成应用程序,默认),subdirs(生成makefile文件编译subdirs指定的子文...
  • thinkme2010
  • thinkme2010
  • 2013年06月09日 15:55
  • 466

QT+CUDA7.5+UBUNTU14.04

接着前面有篇文章介绍在windows上面对他们进行合成,这篇文章我们介绍下在ubuntu上面对其合成。 程序用的是brown大学里面snow-master,该project包括了几个项目,其...
  • seamanj
  • seamanj
  • 2015年12月03日 04:24
  • 1510

CUDA + QT Creator + Win7的集成

最近看到brown大学一位同学做的demo简直是牛B,里面居然实现了物体的移动轴,旋转圈等,跟MAYA界面差不多,一直想找一个这样的GUI,找不到,没办法,自己做吧,所以决心学下QT,当然这位同学的程...
  • seamanj
  • seamanj
  • 2015年11月05日 01:13
  • 3322

win7 + qt5.3 + opencv2.4.8

这几天搭配opencv+qt的环境,由于是第一次接触,期间遇到各种问题,现在将所遇问题总结如下: 1,需要工具:我是用的是opencv2.4.4,qt5.2.1,Cmake的版本是2.8.12....
  • aitile
  • aitile
  • 2014年06月24日 00:23
  • 581

编译Opencv的GPU,利用CUDA加速

首先检查自己的机器是否支持,否则都是白搭(只有NVIDIA的显卡才支持,可在设备管理器中查看) 如果不用GPU,可以直接官网下载预编译好的库 环境: 1 VS2013 2 Opencv...
  • lanbing510
  • lanbing510
  • 2014年11月17日 16:44
  • 11288

从OpenCV中抠CUDA代码——ORB_GPU算法(一)

从OpenCV中抠取CUDA代码出来编译成一个新的工程,主要因为以下2点: 1、OpenCV代码一旦编译成库文件,很难修改内部代码,虽然大部分需要修改的部分已经被提到接口上面了。 2、OpenCV中使...
  • bisheng250
  • bisheng250
  • 2016年12月20日 14:53
  • 1457

ubuntu14.04 下安装GPU版本的OpenCV(CUDA支持)

之前在ubuntu下用github上的脚本一键安装了OpenCV,最近在用一个密集光流计算程序时发现需要用gpu版本的OpenCV,因此需要在编译opencv时选择CUDA支持。 在过程中遇到了各种...
  • wzmsltw
  • wzmsltw
  • 2016年10月01日 20:25
  • 4298
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cuda 5.5 + Qt5 + opencv 2.4.8 使用cmake+vs2012编译GPU加速的opencv
举报原因:
原因补充:

(最多只允许输入30个字)