Opencv中并行图像处理环境的搭建和配置(opencv1.0 CUDA3.0,vs2010)

这一章我们将介绍如何从头搭建并配置一个用于图像处理的VC++并行计算环境。所用操作系统为Windows 7的32位系统,编程环境为VS2005,CUDA版本为3.0,OpenCV版本为1.0。内容包括建立一个基于VS2005的简单的对话框工程,安装和使用OpenCV,以及安装配置CUDA环境。

需要注意,支持CUDA的VisualStudio版本为2005~2010,低版本的开发环境不支持。

1.建立一个简单的对话框工程

我们先从一个简单的MFC对话框工程开始。如图2-1,打开VS2005,点击“文件(File)→新建(New)→工程(Project)”,新建基于Dialog的工程。

【图2-1:新建工程】

如图2-2,在弹出的新建项目(NewProject)对话框中,在左侧的“项目类型”(Project types)中选中MFC,在右侧的模板(Templates)中选择“MFC应用”(MFCApplication),在Name部分输入自己想要的工程名字,如MyProcess,点击OK。

【图2-2:选择MFC工程】

在弹出的MFC向导(MFCApplication Wizard)对话框中(图2-3),左侧选中应用类型(Application Type),然后在右侧选中“基于对话框(Dialogbased)”,然后点击完成(Finish)。这样,我们就建立了一个最简单的对话框工程。

【图2-3:建立对话框】

要查看工程是否已经建立完成,可按F5运行,将出现如图2-4所示界面:

【图2-4:建立完成的对话框】

至此,一个基于MFC的对话框工程就建立完成了。

2.用OpenCV显示“HelloWorld”

注意,本节OpenCV的配置是建立在作者提供的OpenCV库的基础上,该库是在安装完OpenCV 1.0之后编译生成的,而编译生成库的过程就不在本书介绍了。

在MyProcess工程上点击右键,在弹出的对话框中选择“属性(Properties) ”(图2-5)。

【图2-5:选择工程属性】

如图2-6,会弹出一个属性对话框,选择“结构特性(configuration Properties)→C/C++→常规(General)”,在右侧的“附加包含路径(AdditionalInclude Directories)”中输入所示的内容。然后在“语言(Language)”中将“OpenMP支持(OpenMP Support)”的属性改为“是(Yes(/openmp))”。

【图2-6:添加要包含的目录路径】

    再选中左侧“连接器(Linker)”中的“常规(General)”在“附加包含路径(AdditionalInclude Directories)”中输入“.\opencv\lib”;并在“输入(Input)”的“附加依赖项(AdditionalDependencies)”中加入如图7内容。

【图2-7:连接器设置】

然后将OpenCV1.0的cxcore100.dll,highgui100.dll,libguide40.dll三个动态库拷入系统目录或程序运行目录,这样程序就可以使用OpenCV的功能了。

现在,我们用OpenCV来进行图像数据的读入和显示,初步测试一下程序和环境配置。

我们在建立好的对话框中加入一个按钮,将其命名为“Hello World”,并添加其单击响应函数,响应函数代码如【例2-1】:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

voidCMyProcessDlg::OnBnClickedButtonHelloWorld()

{

       IplImage * pImgLoad;

       pImgLoad =cvLoadImage("..\\MyProcess\\TestImg\\Hello World\\Hello World.bmp",

              CV_LOAD_IMAGE_ANYDEPTH |CV_LOAD_IMAGE_ANYCOLOR);

       cvNamedWindow("Hello World",0);

       cvShowImage("HelloWorld",pImgLoad);

       cvReleaseImage(&pImgLoad);

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

编译运行,单击界面上的“HelloWorld”按钮,将弹出如下图像:

【图2-8:OpenCV显示“HelloWorld”】

这样就用OpenCV实现了图像数据的载入和显示。同时,我们也得到IplImage结构,方便对其中的图像数据进行需要的算法处理。

3.安装配置CUDA环境

上面我们实现了对话框和OpenCV环境的搭建,这一部分,将安装和配置CUDA环境。

依次安装cudatoolkit_3.0_win_32.exe和gpucomputingsdk_3.0_win_32.exe,安装路径选择默认即可。安装完成后,可以先运行SDK中的deviceQuery.exe。作者的安装路径在:

C:\Win7Program\NVIDIACorporation\NVIDIA GPU Computing SDK\C\bin\win32\Release

运行这个自带的程序,将会在当前文件夹中输出一个deviceQuery.txt的文档,记录当前使用显卡的性能。

如作者的显卡信息如下:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

C:\Win7Program\NVIDIACorporation\NVIDIA GPU Computing SDK\C\bin\win32\Release\deviceQuery.exeStarting...

 CUDA Device Query (Runtime API) version(CUDART static linking)

Thereis 1 device supporting CUDA

Device0: "GeForce GTS 450"

  CUDA Driver Version:                                         5.50

  CUDA Runtime Version:                                       3.0

  CUDA Capability Major revision number:                     2

  CUDA Capability Minor revision number:                     1

  Total amount of global memory:                                   1073414144bytes

  Number of multiprocessors:                                  4

  Number of cores:                                                        128

  Total amount of constant memory:                         65536 bytes

  Total amount of shared memory per block:             49152 bytes

  Total number of registers available perblock:         32768

  Warp size:                                                           32

  Maximum number of threads per block:                 1024

  Maximum sizes of each dimension of a block:         1024 x 1024 x 64

  Maximum sizes of each dimension of a grid:           65535 x 65535 x 65535

  Maximum memory pitch:                                     2147483647 bytes

  Texture alignment:                                               512 bytes

  Clock rate:                                                          1.57GHz

  Concurrent copy and execution:                             Yes

  Run time limit on kernels:                                    Yes

  Integrated:                                                          No

  Support host page-locked memory mapping:           Yes

  Compute mode:                                                   Default(multiple host threads can use this device simultaneously)

deviceQuery,CUDA Driver = CUDART, CUDA Driver Version = 5.50, CUDA Runtime Version = 3.0,NumDevs = 1, Device = GeForce GTS 450

PASSED

Press<Enter> to Quit...

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

如果测试最后显示PASSED,恭喜你,你的显卡支持CUDA并行计算,可以继续进行下面的操作了。

然后,在我们的工程属性中进行CUDA配置,方法类似于OpenCV的配置。

在“附加包含路径(AdditionalInclude Directories)”中加入 $(CUDA_INC_PATH)(安装CUDA toolkit之后自动配置的系统变量,如果没有,可以自己手动添加)。

在“附加库路径(AdditionalInclude Directories)”中加入 $(CUDA_LIB_PATH)

在“附加依赖项(AdditionalDependencies)”中加入cudart.libcufft.lib

再在工程上右键单击,选择“自定义生成规则(CustomBuild Rule)”,在弹出的对话框中选择Find Existing…,在弹出的对话框中找到C:\Win7Program\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\common路径下的Cuda.rules文件,如图2-9所示:

【图2-9:自定义生成规则】

然后在AvailableRule Files中选中 CUDA Build Rule v3.0.14,点击OK,完成CUDA的整个设置。

转:https://blog.csdn.net/qq_28372387/article/details/48623037

猜你喜欢

转载自blog.csdn.net/eric_e/article/details/83904851
今日推荐