如何編譯OpenCV-2.3.x/OpenCV-2.4.x使其支持GPU-CUDA高速運算?

    版權聲明:對於本博客所有原創文章,允許個人、教育和非商業目的使用,但務必保證文章的完整性且不作任何修改地以超鏈接形式註明原始作者、出處及本聲明。

    博客地址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:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK4.2\C\common\bin”)已經添加到環境變量中後,我們就開始編譯支持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 Files\OpenCV\src”目錄下,安裝完成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”選項,不然會報錯的,如下所示。

CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindCUDA.cmake:616 (message):
  CUDA_BUILD_EMULATION is not supported in version 3.1 and onwards.  You must
  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”按鈕,所有紅色行已經變爲白色,在下方的信息我們會看到如下信息:

  Other third-party libraries:
    Use IPP:                     NO
    Use TBB:                     YES (ver 4.0 interface 6004)
    Use Cuda:                    YES (ver 4.2)
    Use Eigen:                   NO

  NVIDIA CUDA:                   (ver 4.2)
    Use CUFFT:                   YES
    Use CUBLAS:                  YES
    NVIDIA GPU arch:             11 12 13 20 21
    NVIDIA PTX archs:            11 12 13 20 21
    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/


附件下載:

http://115.com/file/c2eplh5m#cudatoolkit_4.2.9_win_32.msi

http://115.com/file/ancmqi7g#gpucomputingsdk_4.2.9_win_32.exe

http://115.com/file/ancmij8r#cudatoolkit_4.2.9_win_64.msi

http://115.com/file/dpk7d5nz#gpucomputingsdk_4.2.9_win_64.exe


編譯後文件(無需再編譯,可直接使用):

http://download.csdn.net/detail/shuxiao9058/4272127 OpenCV-2.4.0-win32-vs2005(with CUDA)&tbb
http://download.csdn.net/detail/shuxiao9058/4272129 OpenCV-2.4.0-win32-vs2008(with CUDA)&tbb
http://download.csdn.net/detail/shuxiao9058/4272128 OpenCV-2.4.0-win32-vs2010(with CUDA)&tbb

發佈了45 篇原創文章 · 獲贊 89 · 訪問量 75萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章