1. 程式人生 > >Opencv中並行影象處理環境的搭建和配置(opencv1.0 CUDA3.0,vs2010)

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