还有一点就是使用GPU模块,需要在用CMake编译OpenCV时使其中的WITH_CUDAWITH_TBB的宏生效,为ON 
 
superpack是有各个版本的lib文件,这个要加入vs2010的库目录的
  • 自己编译的库,库目录为:D:Program FilesOpenCV2.3.1buildmyinstalllib
  • 32位系统 & VC2008,库目录为:D:Program FilesOpenCV2.3.1buildx86vc9lib
  • 32位系统 & VC2010,库目录为:D:Program FilesOpenCV2.3.1buildx86vc10lib
 
而如果是专门为某个版本vc编译的库,比如OpenCV for Windows(VC2010专用版)那么就只有vc10的lib
如还不懂可阅读下
 
使用gpu模块开头必须使用
#include <iostream> #include "opencv2/opencv.hpp" #include "opencv2/gpu/gpu.hpp"
两个使用gpu模块的例子:
 
源代码只是少了build文件夹
下图是源代码版本
[转载]opencv各个安装包,GPU模块安装
下图是superpack版本,看出来只是多了build文件夹,该文件夹是opencv.sln解决方案,用vs打开后,点击生成解决方案就会生成bulid文件夹,里面是动态链接库lib文件和dll文件,lib是编写程序后连接需要,dll是运行程序时需要

[转载]opencv各个安装包,GPU模块安装
 
 

OpenCV2.3在CUDA4.0+VS2008+win7 32bit环境下的配置

--------------------------------------------------------------------------------------------------
 
  1. 下载相关文件
    1. 在sourceforge上下载OpenCV2.3相关文件,其中:
      • OpenCV-2.3.0-win-superpack.exe 包含了源码和已编译好的版本,本教程以superpack为例;
      • OpenCV-2.3.0-win-src.zip 只包含源码;
      • OpenCV-2.3.0-gpu-support-win32-vs2008.zip 是针对OpenCV-2.3.0-win-superpack.exe 对GPU支持的补充包,如果想直接使用superpack中已编译好的版本且需要CUDA支持,需要下载此包。
    2. 运行OpenCV-2.3.0-win-superpack.exe,得到OpenCV2.3文件夹,其中build问价家为已编译好版本,opencv文件夹为源码;
  2. 源码编译(使用superpack中已编译好的版本可跳过此步骤)
    1. 下载并安装CMake. http://www.cmake.org/
    2. 运行CMake (cmake-gui)(我使用的是CMake2.8.7,各版本界面安排可能稍许不同),填写源码位置,及build输出位置:PIC1
    3. 点击下方 configure 按钮,选择编译器:PIC2 点击Finish,等待configure完毕;
    4. configure完毕后,配置build选项:PIC3 需要CUDA4.0需要注意 勾选WITH_CUDA: PIC4 他默认,或根据自己需要配置即可;
    5. 配置完毕,点击Generate生成build,在第二步中填入的build输出文件夹下会生成一个OpenCV project,运行OpenCV.sln,生成debug、release解决方案,等待生成完毕;
    6. 生成完毕后,在bin和lib文件夹下会生成debug和release的DLL,EXE,LIB,至此,源码编译步骤完毕。
  3. 配置OpenCV2.3
    1. 建立OpenCV23文件夹,以D:OpenCV23 为例,将解压superpack得到的build问价夹拷贝到该目录下;
    2. 若是自行编译,将2-6中的debug和release 的DLL和EXE覆盖D:OpenCV23buildx86vc9bin;LIB覆盖D:OpenCV23buildx86vc9lib;若是使用superpack已编译好版本,将OpenCV-2.3.0-gpu-support-win32-vs2008.zip中的DLL和LIB分别加入上面两个目录替换同名文件;
    3. 将 D:OpenCV23buildx86vc9bin 加入到PATH变量;
    4. 在VS中 工具->选项->VC++目录中,包含文件添加:D:OpenCV23buildincludeopencv

      D:OpenCV23buildinclude

      库文件添加:D:OpenCV23buildx86vc9lib

    5. 在建立的项目中,需要附加依赖项:DEBUG:D:OpenCV23buildx86vc9libopencv_core230d.lib

      D:OpenCV23buildx86vc9libopencv_highgui230d.lib

      D:OpenCV23buildx86vc9libopencv_video230d.lib

      D:OpenCV23buildx86vc9libopencv_ml230d.lib

      D:OpenCV23buildx86vc9libopencv_legacy230d.lib

      D:OpenCV23buildx86vc9libopencv_imgproc230d.lib

      RELEASE:

      D:OpenCV23buildx86vc9libopencv_core230.lib

      D:OpenCV23buildx86vc9libopencv_highgui230.lib

      D:OpenCV23buildx86vc9libopencv_video230.lib

      D:OpenCV23buildx86vc9libopencv_ml230.lib

      D:OpenCV23buildx86vc9libopencv_legacy230.lib

      D:OpenCV23buildx86vc9libopencv_imgproc230.lib

    6. 至此,OpenCV2.3在CUDA4.0+VS2008+win7 32bit环境下的配置完毕。
  4. 遇到的问题

7rack在编译OpenCV2.3和CUDA4.0中遇到了诸如:

1> D:OpenCV2.3buildincludeopencv2/core/operations.hpp(1265): error: expected a “>”

1>D:OpenCV2.3buildincludeopencv2/flann/index_testing.h(144): warning: variable “p1″ was set but never used

1>D:OpenCV2.3buildincludeopencv2/flann/index_testing.h(221): warning: variable “p1″ was set but never used

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(359): error: this operator is not allowed in a template argument expression

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(359): error: expression must have a constant value

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(359): error: expected a “>”

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(394): error: this operator is not allowed in a template argument expression

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(394): error: expression must have a constant value

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(394): error: expected a “>”

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(432): error: this operator is not allowed in a template argument expression

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(432): error: expression must have a constant value

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(432): error: expected a “>”

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(464): error: this operator is not allowed in a template argument expression

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(464): error: expression must have a constant value

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(464): error: expected a “>”

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(519): error: expected a “>”

1>D:OpenCV2.3buildincludeopencv2/flann/autotuned_index.h(526): error: expected a “>”

的OpenCV2.3头文件的错误,这nvcc编译器的编译方法引起的错误,解决方法是,给每一个变量加上()括号(以上面这个operations.hpp(1265)为例):

operations.hpp 第1265行:

CV_DbgAssert( this->idx < cn ); 改成: CV_DbgAssert( (this->idx) < (cn) );

-----------------------------------------------------------------------------------------------

版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。

    博客地址http://blog.csdn.net/shuxiao9058

    原始作者:季亚


    前面,我们讲到了使用OpenCV-2.4.0在Visual Studio 2005/2008/2010常规编译的方法,本文则主要讲述如何使OpenCV支持CUDA高速运算。

   我们将要使用的工具除了常规编译方式使用的工具外,还要使用CUDA tookit和GPU Computing SDK,如本人使用的版本分别为cudatoolkit_4.2.9_win_64.msi和gpucomputingsdk_4.2.9_win_64.exe(我的电脑是64位系统),相关文件可以从官网下载。

    下载完成后并安装,确保CUDA SDK的bin目录(“C:ProgramDataNVIDIA CorporationNVIDIA GPU Computing SDK4.2Ccommonbin”)已经添加到环境变量中后,我们就开始编译支持CUDA高速运算的OpenCV。

    本文以Visual Studio 2005 Professional为例,其他编译器总体一样,只不过在intel tbb环境变量配置这一步略微不同,可以参考博文:使用OpenCV-2.4.0.exe文件编译x86或x64平台Visual Studio2005/2008/2010目标文件

一、生成项目文件

    假设我们已经将OpenCV-2.4.0源代码放到“C:Program FilesOpenCVsrc”目录下,安装完成cmake,并将ntel tbb可执行目录添加到系统环境变量,并使变量生效,相关部分参考博文:使用OpenCV-2.4.0.exe文件编译x86或x64平台Visual Studio2005/2008/2010目标文件

    运行cmake,如图1所示,然后单击“Where is the source code:”右侧的“Browse Source”,浏览到“C:/ProgramFiles/OpenCV/src”文件夹,单击“where to build the binaries:”右侧的“Browse Build”,浏览到“C:/Program Files/OpenCV/vs2005”文件夹(vs2005文件夹是我自己创建的)。

图1 配置源代码和生成目录

    然后单击左下方的“Configure”按钮,这时会弹出“cmake-gui”窗口,在“Specify the generator for this project”下拉菜单选择“Visual Studio 8 2005”、“Usedefault native compilers”后,单击“Finish”按钮,如图2所示。

图2 生成项目类型选择

完成以上操作后勾选“BUILD_EXAMPLES”、“CUDA_BUILD_CBUIN”、“CUDA_VERBOSE_BUILD”、“WITH_TBB”和“WITH_CUBLAS” 、“WITH_CUDA”注意这里千万不要勾选“CUDA_BUILD_EMULATION”选项,不然会报错的,如下所示。

 

[plain] view plaincopy
 
  1. CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindCUDA.cmake:616 (message):  
  2.   CUDA_BUILD_EMULATION is not supported in version 3.1 and onwards.  You must  
  3.   disable it to proceed.  You have version 4.2.  

 

    这是因为在从CUDA 4.0开始NPP(NVIDIA Performance Primitives library,英伟达基本性能库)就是CUDA tookit的一部分面不再单独提供了。

    配置tbb相关目录(包含目录、可执行目录和库目录),详情参考本人博文:使用OpenCV-2.4.0.exe文件编译x86或x64平台Visual Studio2005/2008/2010目标文件。这里不再赘述。

    单击“Configure”按钮,所有红色行已经变为白色,在下方的信息我们会看到如下信息:

 

[plain] view plaincopy
 
  1. Other third-party libraries:  
  2.   Use IPP:                     NO  
  3.   Use TBB:                     YES (ver 4.0 interface 6004)  
  4.   Use Cuda:                    YES (ver 4.2)  
  5.   Use Eigen:                   NO  
  6.   
  7. NVIDIA CUDA:                   (ver 4.2)  
  8.   Use CUFFT:                   YES  
  9.   Use CUBLAS:                  YES  
  10.   NVIDIA GPU arch:             11 12 13 20 21  
  11.   NVIDIA PTX archs:            11 12 13 20 21  
  12.   NVIDIA GPU features:         11 12 13 20 20 20  

 

    特别注意,有两条为“Use TBB: YES (ver 4.0 interface 6004)”和“Use Cuda: YES (ver 4.2)”的字样,证明我们已经将intel tbb和CUDA正确配置。

    最后点击Generate,下方的信息里面会有一条为“Generating done”的字样(如图3所示),而且我们已经成功生成项目文件(如图4所示)。

图3 “Generating done”

图4 成功生成项目文件

二、编译生成目标文件

三、整理目录

四、配置并测试OpenCV-2.4.0函数库

    说明:由于第二、第三和第四部分与本人另一篇博文:使用OpenCV-2.4.0.exe文件编译x86或x64平台Visual Studio2005/2008/2010目标文件完全相同,只不过编译时需要相当长的时间,这里不再赘述。


参考链接:http://blog.cuvilib.com/2011/03/22/how-to-build-opencv-2-2-with-gpu-cuda-on-windows-7/

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()