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”,而有些文件则没有,这是为了辨别调试模式与发行模式生成的文件,不能调试的朋友要特别注意这一点。




关于使用opencv的提速(三)(GPU加速)

相对于前两章的利用x86转为x64提速,以及多线程的openmp提速 根据自己前两天的见识及理解(x86转为x64提高一倍的速度,openmp将cpu的利用率从百分之20多提高到百分之百) 利用GPU...
  • wangzhebupt
  • wangzhebupt
  • 2014-04-04 16:33:10
  • 10633

OpenMP并行编程应用—加速OpenCV图像拼接算法

OpenMP是一种应用于多处理器程序设计的并行编程处理方案,它提供了对于并行编程的高层抽象,只需要在程序中添加简单的指令,就可以编写搞笑的并行程序,而不用关心具体的并行实现细节,降低了并行编程的难度和...
  • dcrmg
  • dcrmg
  • 2017-01-11 07:17:33
  • 4867

TX2核心板安装OpenCV3.2(在cuda9.0的环境下)

今天新到的TX2,还有点烫手,买来要用在无人机上做视觉的目标识别,所以自然要装上OpenCV喽!TX2核心板买来就自带了cuda9.0,据说这个和opencv3不太搭,在安装的过程中确实体会到了,需要...
  • hnlyzxy123
  • hnlyzxy123
  • 2018-04-01 21:11:52
  • 67

PCL(Point Cloud Library)的第三方库简介(boost,eigen,flann,vtk,qhull)

PCL因为融合了大量的第三方开源库,导致学习成本升高~在学习之前我们不妨了解一下这些库都是干嘛的,以便有的放矢,在之后更好的使用 boost: C++的标准库的备用版,擅长从数学库到智能指针,...
  • wangzhebupt
  • wangzhebupt
  • 2014-04-25 13:31:13
  • 2574

编译Opencv的GPU,利用CUDA加速

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

OpenCV中配置CUDA,实现GPU加速

OpenCV中配置CUDA,实现GPU加速 http://blog.csdn.net/u012062327 按语:首先感谢http://blog.csdn.net/fengbingchu...
  • u012062327
  • u012062327
  • 2014-11-30 20:23:44
  • 2804

Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程

Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程
  • jywowaa
  • jywowaa
  • 2016-08-20 21:42:19
  • 4602

计算机视觉的三种层次

计算机视觉的信号处理层次 低层视觉处理 单图像:滤波/边缘检测/纹理 多图像:几何/立体/从运动恢复仿射或透视结构  affine/perspective structure frommotion ...
  • wangzhebupt
  • wangzhebupt
  • 2013-09-24 09:01:34
  • 1924

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

之前在ubuntu下用github上的脚本一键安装了OpenCV,最近在用一个密集光流计算程序时发现需要用gpu版本的OpenCV,因此需要在编译opencv时选择CUDA支持。 在过程中遇到了各种...
  • wzmsltw
  • wzmsltw
  • 2016-10-01 20:25:28
  • 5160

OpenCV 3.1.0 重编译——支持CUDA8.0

写在前面最近主要在看机器学习的十大算法,尝试书中提供的示例,实验环境是win7 + python3.4.4 。突然间,我发现新版本的OpenCV对机器学习大部分算法都有很好的实现,原谅我一直停留在2....
  • liujiabin076
  • liujiabin076
  • 2017-03-31 16:30:19
  • 2613
收藏助手
不良信息举报
您举报文章:Cuda 5.5 + Qt5 + opencv 2.4.8 使用cmake+vs2012编译GPU加速的opencv
举报原因:
原因补充:

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