1. 程式人生 > >Visual Studio 2017 15.8+CUDA10.0+opencv 3.4.2+opencv_contrib 3.4.2+cmake+Windows10 環境下編譯opencv原始檔

Visual Studio 2017 15.8+CUDA10.0+opencv 3.4.2+opencv_contrib 3.4.2+cmake+Windows10 環境下編譯opencv原始檔

一、下載相應的檔案:

    注意:雖然同樣是VS2017的IDE,但VC++編譯器版本是有區別的,參考:https://baike.baidu.com/item/_MSC_VER/9468279?fr=aladdinhttp://www.cnblogs.com/misswjr/articles/9360412.html;本人編譯的時候用的是VC++ 15.8 即_MSC_VER == 1915;為什麼要提到這個區別呢,首先我們希望以後能利用到GPU,那麼編譯的時候就得用到CUDA(參見下文CUDA),然而CUDA版本對VS的相容速度始終跟不上VS的更新速度,當然這是必然的,比如:CUDA9.2對VS的兼容範圍就是_MSC_VER>=1600 && _MSC_VER<=1913(參考你們自己安裝的CUDA路徑下這個配置檔案:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include\crt\host_config.h;在該檔案大概第133行可見),CUDA10.0的範圍是1700~1920,所以沒辦法,我只能安裝CUDA10.0了,那是因為手欠,更新了VS!!!這個坑已填,望各位切勿再踩。

     針對自己的VS版本,下載需要的CUDA版本,不然安裝了CUDA又得解除安裝,為什麼要解除安裝呢,因為安裝高版本的CUDA並不覆蓋低版本,而是新建新的路徑,CUDA安裝很耗費空間的,所以能一步到位,就不要來回倒騰了。解除安裝CUDA時的注意事項:如圖1,圖2所示;當然,您非要高興同時裝兩個版本,請忽略。

圖1
圖2

    為什麼有個或者呢,開源專案嘛,能在GitHub上找找也是個好習慣!

    這個時候你會發現,opencv_contrib只能在Github上找到。且官方opencv3版本不僅移除了一些功能,同時還不包含GPU功能,想用GPU只能帶上opencv_contrib自己編譯。注意:contrib的版本必須都是相同的,即3.4.2

二、編譯

    1、話不多說,用管理員身份開啟CMake,為什麼管理員身份呢?本人使用的時候發現,有坑,因為使用的時候需要許可權什麼的,否則Configure會出錯。介面如下:

圖3.cmake介面

在圖3介面下,第一步:在數字1區域,選擇你opencv3.4.2的原始檔所在目錄,即CMakeLists檔案所在目錄;

第二步:在數字2區域,選擇你所希望安放編譯檔案的所在目錄,當然,要建立一個資料夾,命名build還是mybuild,隨便啦。

第三步:點選數字4所在按鈕Configure,稍等片刻後點擊數字5所在按鈕Generate;

第四步,數字3所在區域出現內容後,勾選WITH_CUDA還有設定opencv_contrib的modules目錄,(其它選擇可按需勾選,比如:ENABLE_CXX11)如圖4,圖5所示;

第五步,同第三步即可。

圖4.contrib路徑
圖5.勾選WITH_CUDA

2.很快,你可以在你建立的build資料夾下看到解決方案OpenCV.sln,開啟它。額......注意以管理員身份或者進去後升級為管理員身份重新開啟。然後勾選配置管理中install專案,重新生成解決方案,漫長等待之後,若一切順利,在build/install/......可以找到相應的bin及lib目錄,後面就暫不需要介紹了。