WIN10 + OpenCV3.4 + CUDA8.0 + Cmake3.9.0 + TBB + VS2015配置/重編譯

寫給和我一樣的小白。求助和不明白的地方用橙色加以表示

平臺:

    Windows 10.0.15063
    CMake: 3.9.0            下載地址:https://cmake.org/download/

顯卡:

    NVIDIA GeForce GT 755M (筆記本)

軟件/庫資源:

    CUDA 8.0 GA1      下載地址:https://developer.nvidia.com/cuda-80-download-archive

    OpenCV3.4.1         下載地址:https://opencv.org/opencv-3-4-1.html
    TBB4.4                   下載地址:https://github.com/01org/tbb/releases
    VS2015 community        (默認已有)

編譯器:

    VS2015 Win64         (默認已有)


1.安裝CUDA8.0

    1)依據個人所需,下載軟件資源


    2)確保自己電腦的GPU支持CUDA,詳細資料諮詢

    https://www.geforce.com/hardware/technology/cuda/supported-gpus?field_gpu_type_value=All&page=2

    3)確保自己電腦有相應的顯卡驅動程序(此條爲網上所云,但是好像安裝CUDA的時候似乎也會給裝?

    4)安裝CUDA 個人採用精簡安裝於默認路徑,建議還是高級選項裏確認一下什麼安裝了什麼沒有安裝

    5)爲了今後的方便,按照網上的流程對CUDA進行了配置,並運行了一個簡單的例程,配置流程參照(應該可以不用配置

    https://yq.aliyun.com/articles/71287
    http://blog.csdn.net/lvfeiya/article/details/53325784

    運行例程爲第一篇文章裏所說的nbody

2.安裝TBB和OpenCV3.4庫和CMake

    與其說安裝,不如說解壓,庫下載並解壓到指定位置。CMake下載後順序安裝即可。

    我的TBB解壓路徑爲:D:\tbb2018_20171205oss

    並添加系統環境變量    D:\tbb2018_20171205oss\bin\intel64\vc14
    其中VC14代表是VS2015 intel64代表是應用於64位的系統

    我的OpenCV解壓路徑爲:D:\openCV3.4.1\opencv(之前有openCV2了用於區別)這個時候OpenCV庫已經可以在VS裏使用了,配置方法具體參照:

    http://blog.csdn.net/poem_qianmo/article/details/19809337

3.CMake設置

    從這裏開始終於正式進入重編譯階段.

    1)首先打開CMake,源代碼位置爲OpenCV源碼位置,輸出位置爲自己設定的位置,進行第一次配置(configure)

    並確定採用VS2015 x64,模式默認就行。我的設定位置爲:D:/opencv3_CUDA


    2)仔細瀏覽整個配置紅色的配置選項,如果這一步出現了問題,後面的編譯將很有可能不成功

    由於之前安裝了CUDA,如果一切配置正確,WITH_CUDA是默認勾選上的,檢查其是否被勾選。檢查CUDA相關文件夾的路徑,版本等情況是否符合自己的要求,依據http://blog.csdn.net/wolffytom/article/details/49976487,確保BUILD_CUDA_STUBS 沒有 被選中。我的配置完情況如下(當然有些功能看自己需求添加或刪改):

    


    設定完成後可以進行一次配置(configure)

    之前解壓了TBB,但是我這裏沒有爲WITH_TBB自動畫勾,就需要自己勾選上。這時候點擊一次配置(configure),會讓你選擇TBB相關文件的路徑, 對應我之前的TBB解壓路徑 填寫:

    TBB_ENV_INCLUDE    D:/tbb2018_20171205oss/include

    TBB_ENV_LIB    D:/tbb2018_20171205oss/lib/intel64/vc14/tbb.lib

    TBB_ENV_LIB_DEBUG     D:/tbb2018_20171205oss/lib/intel64/vc14/tbb_debug.lib

    以上這幾個不要填寫錯誤仔細檢查,否則編譯時會提示編譯錯誤 XXX.lib打不開 等(親身體會orz)

    TBB_DIR這個選項我填寫了已經解壓的文件夾但是在配置之後會消失,並不影響之後的編譯工作,還希望能有個明白的說法。

    填寫完成後再點擊一次配置(configure),我這裏是自動填上的,檢查:

    TBB_VER_FILE    D:/tbb2018_20171205oss/include/tbb/tbb_stddef.h

    最後點擊一次配置(configure)表單全白,出現configure done 的信息說明沒有問題。


4.寫在前面

    在這個時候先別急着點生成(generate)留意一下配置的選項的每個選項的功能,以及配置的輸出信息,作爲一個之前從來沒用過CMake小白才明白CMake到底起着什麼樣的作用,也可以瞭解到openCV到底可以與哪些其他的庫結合進行編譯,或者如何修改定製滿足自己需求的庫。這個時候特別說明一下,由於之前電腦上安裝了Matlab2014a,在利用Cmake配置的時候,默認選上了Matlab相關的選項。但是在之後的VS2015編譯過程中總是因爲它而報錯,具體見:   
    http://answers.opencv.org/question/125939/solved-mexext-issues-compiling-32-with-cuda/
錯誤的形式爲:

    Error: MEXEXT: Unsupported platform. 
如果問題出在Matlab上,檢索Cmake表單中的Matlab這項,然後把默認的勾去掉,編譯就順利通過了。

    同樣一些莫名其妙的錯誤全部出現在opencv_testXXX和opencv_perfXXX中,個人猜測這些應該和最後的生成庫沒有太大的關係(見名字就知道是性能測試所用)。如果和我一樣有強迫症不想看見紅叉叉,估計可以在配置Cmake的時候嘗試着不勾選BULID_PERF_TEST,但是,我沒有這麼做,在接下來的生成install中也沒有產生其他問題。

    最後,如果一切就緒,點擊Generate生成VS2015工程文件。

5.VS2015工程編譯

    進入生成的工程文件夾,點擊openCV.sln進入工程,裏面包含剛剛通過Cmake的相應選項產生的未編譯的工程,譬如在Cmake裏勾選了BUILD_CORE,裏面就會有opencv_core這個工程。同樣由於我們選擇了CUDA,裏面就會有很多關於CUDA的工程文件。這些工程生成的lib就是和我們從網上下載下來的lib之間的主要區別。

    首先檢查自己的編譯器是否是和Cmake選擇的一致(譬如是64位不是32位),確定是debug版本還是release版本(如下圖),依照http://www.cnblogs.com/asmer-stone/p/5530868.html提示的方法,可以先試一試關鍵的幾個工程生成是否能夠通過,譬如opencv_core, opencv_cudabgsegm等等,如果出現問題可以節省時間去分析和查找。大概是openCV的版本不同,Cmake配置不同,工程數量以及後續出來的lib個數也不太一樣。不知道會不會在之後的使用過程中產生問題。

    如果上述的一些關鍵工程編譯沒有什麼問題,那麼就可以直接生成all_build 和 install工程了,工程名右鍵->生成。

    接下來就可以去幹幹別的事情了,譬如睡個午覺喝喝茶。。。估計整個的編譯過程在2到3小時。

    在編譯的過程中我的電腦產生了大量的C4819警告,調查與編碼格式有關,關於這個問題個人沒有找到徹底的解決方法。(不要提什麼關閉警告忽略警告之類的,強迫症在此謝過了)


    整體編譯完成後沒有生成失敗的項目,那麼基本上就應該沒有什麼太大的問題了。

6.重編譯庫的運用與測試

    將工程文件夾下的install當成我們下載下來就可以使用的OpenCV庫就可以,配置方法相同,只不過是改個路徑而已,具體參見

    openCV標準庫配置方法:http://blog.csdn.net/poem_qianmo/article/details/19809337

    自編譯庫的配置方法:http://www.cnblogs.com/asmer-stone/p/5530868.html 參見其中的後半部分 包含測試程序等

    最後,針對那麼多lib文件需要添加到鏈接器中的問題,也沒必要大費周章的寫個python腳本,DOS就可以解決了:

    https://jingyan.baidu.com/article/ed15cb1b7220061be36981fa.html

7.參考資料

    所有上述引用的網頁

    http://www.cnblogs.com/freedomshe/archive/2013/01/11/win7_vs2012_opencv_rebuild.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章