1. 程式人生 > >OpenCV3.4.0+contrib在VS2017下編譯_win10 64位

OpenCV3.4.0+contrib在VS2017下編譯_win10 64位

一、前言      

        opencv新出了3.4.0版本,最近重灌系統,索性就把VS和opencv全換成最新版了,索然不知道新添了啥牛逼功能,不過先把環境配置好再說。

二、操作環境

系統:win10 64位 

其它:VS2017    CMake 3.10.0-rc3

     vs2017和CMake的安裝就不說了,網上還是有很多教程的,百度一下都好使。

三、準備檔案

OpenCV3.4.0    

OpenCV_contrib

下載說明:

3.1 開啟連結後出現如下介面:


       這是opencv在GitHub上公開的原始碼,包括opencv原始碼和拓展模組contrib及其之前的各個版本。當然,以後OpenCV升級都可以繼續在這裡面下載到。所以還是非常有必要收藏一下的。

3.2  單擊opencv ,,按下圖所示完成opencv3.4.0的下載。



等待下載完成,如此就下載好了opencv3.4.0。

3.3 返回3.1所示介面,單擊opencv_contrib,與上述過程類似。


等待下載完成,如此就下載好了contrib模組。注意:contrib模組的版本一定要與opencv的相同,否則會出現錯誤。本文均選擇3.4.0版本。

3.4 下載後,解壓到自定義的目錄中。


四、編譯OpenCV 3.4.0

       寫到這突然發現好囉嗦啊,下載說明有點長,不過對新手應該會比較容易理解一點吧。接下來是最最最最主要的部分,樓主在編譯時也遇到了很多問題,再編譯的過程中也會向大家一一說明,以及如何解決,為後來者提供方便吧。

4.1 開啟CMake的gui介面,按下圖所示操作:

彈出選擇編譯器介面,選擇Visual Studio 15 2017 win64 ,然後點Finish.


說明:該過程需要聯網。但也有可能會因為網路不穩等原因導致出現部分檔案無法下載,會以紅字的形式報錯,此時需要到編譯目錄中開啟CMakeDownloadLog.txt,找到對應的下載連結,自行下載,然後將下載的檔案放到相應的目錄中。再次點Configure,直到不出現紅字錯誤為止,方可進行下一步。

錯誤說明:

錯誤1:無法下載opencv_ffmpeg.dll檔案。最長出現的錯誤就是無法下載opencv_ffmpeg.dll、opencv_ffmpeg_64.dll、ffmpeg_version.cmake三個檔案,樓主此次只有opencv_ffmpeg.dll未成功下載,另外兩個軍成功下載。

FFMPEG: Download: opencv_ffmpeg.dll

=======================================================================

Couldn't download files from the Internet.

Please check the Internet access on this host.

=======================================================================

CMake Warning at cmake/OpenCVDownload.cmake:190 (message):
FFMPEG: Download failed: 6;"Couldn't resolve host name"

For details please refer to the download log file:

F:/opencv3.4.0/newbuild/CMakeDownloadLog.txt

Call Stack (most recent call first):
3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)
cmake/OpenCVFindLibsVideo.cmake:218 (download_win_ffmpeg)
CMakeLists.txt:602 (include)

解決方法:到編譯目錄中開啟CMakeDownloadLog.txt,找到opencv_ffmpeg.dll的下載連結,自行下載,然後將下載的檔案拷貝到自定義的編譯目錄\3rdparty\ffmpeg\路徑下。再次點選configure.


錯誤2:找不到ippicv,報錯的圖就不往上放了,寫部落格再次編譯的時候竟然沒有出現這個錯誤,樓主表示有時候出現啥錯誤真的看緣分。

解決方案:到編譯目錄中開啟CMakeDownloadLog.txt,找到ippicv_2017u3_win_intel64_general_20170822.zip的下載連結,自行下載,然後在壓縮包名前面加上檔案的hash值(文末會上傳一個附件,下載後開啟,把檔案拖入,就能得到檔案的hash值。),即壓縮包名變為hash值-原名,再將其複製到sources\.cash\ippicv\資料夾下(sources是解壓的opencv3.4.0的目錄。一般opencv編譯時,會檢視.cash資料夾下是否有相應的檔案,如果有,就用此資料夾下的編譯,否則去網上下載。),再次點選configure,直到全部正確。

4.2 完成後,找到OPENCV_EXTRA_MOUDULES_PATH項,如下圖所示,設定contrib庫的modules目錄,然後點configure進行第二次配置。


然後等待generate done即可


4.3 用vs2017生成release 和 debug 動態連結庫

上一步結束後,點選cmake中的【Open Project】這會自動開啟vs2017 ,也可以到myBuild裡找到OpenCV.sln開啟。 
開啟vs2017後一般可以直接看到【解決方案資源管理器】一欄,沒有就點選【檢視v】-【解決方案資源管理器p】,可以看到OpenCV的解決方案

解決方案

選擇你需要的平臺 ,選擇release x64。(先選那個都一樣)
這裡寫圖片描述
右鍵解決方案重新生成 
 
待結束後,點開CmakeTargets–>INSTALL,右鍵->【僅用於專案】->【僅生成INSTALL】 
生成後把opencv和contrib綜合了起來。所以配置的時候只需要用myBuild/install了。
這是myBuild裡的檔案

由於垃圾檔案很多myBuild裡可以只留下install,其他都可以刪掉
等待完成。同樣的過程選擇debug x64平臺再執行一遍。至此編譯結束。
myBuild最後大概有6.5G【有很多垃圾檔案】。由於我的程式一般按裝到D盤,所以我在D盤新建了一個資料夾,命名為opencv3.4.0
,然後將install中的內容拷貝到此資料夾下,再將opencv3.4.0和contrib的原始碼拷貝過來(原始碼拷不拷被都無所謂,不影響使用,
只是以後看原始碼方便。)。最終形成編譯完的檔案。
五、配置環境變數

1.      右鍵電腦【屬性】

2.      【高階系統設定】

3.      【環境變數】

4.      【系統變數】【Path

1.      在變數值後加 
編譯目錄\install\x64\vc15\bin 的完整路徑
注意這要改成你的路徑,多個變數值以英文分號分開