OpenCV 4 + contrib 編譯 with CMake windows

1.源碼下載

OpenCV:https://github.com/opencv/opencvpython

contrib:https://github.com/opencv/opencv_contribgit

注意本體和contrib的版本匹配,詳見如下:github

 

 

 默認的是「master」分支,咱們須要點擊「Branch:master」按鈕,點擊「Tags」標籤,在下拉列表中選擇想要的版本。本文以4.1.0爲例。算法

本體和擴展模塊選擇一樣的分支:瀏覽器

     

 

 選擇「Download ZIP」下載到本地架構

 

 

 

2.CMake首次設置

CMake下載地址:https://cmake.org/download/ui

1)打開CMake,設置好OpenCV本體源碼所在路徑,以及存放生成的工程的目標路徑url

 

 

正確的源碼路徑以下圖,包含一個CMakeList.txt文件,根據本身存放的位置進行設置。spa

 

 

 注意:3d

路徑中不能有中文

確保目標路徑的硬盤剩餘空間在18G以上

 

2)點擊「Configure」

 

 

3)選擇編譯器:

 

 

當前版本不支持用vs 2019編譯,選擇2017。

 

4)在第二欄選擇編譯器架構,這裏選擇64位(x64)。要根據本身硬件架構進行選擇:32位兼容性好(win32),64位速度快,arm架構的硬件要選擇arm。

(注:老版本的CMake在上一步就會選擇編譯器架構)

 

 

5)點擊「完成」進行第一次編譯。此次編譯可能會報錯,但不用去管。咱們會發現出現了不少紅色背景的選項。

 

3.在CMake中進行contrib擴展模塊等的詳細設置

1)找到「OPENCV_EXTRA_MODULES_PATH」。(可在「Search」欄中直接搜索)

 

 點擊右側的省略號選擇下載的contrib源碼中,「modules」文件夾的路徑(注意不是contrib的主目錄)。

該路徑是下面這樣的:

 

 

2)可選項:

a.若是須要使用surf特徵檢測之類的有專利的算法,須要勾選"OPENCV_ENABLE_NONFREE」:

 

 

 

 b.可勾選「BUILD_opencvv_world」,這樣最後的庫是一個文件,引用更簡便。

 

c.根據自身python版本和須要選擇性勾選「BUILD_opencv_python2」,「BUILD_opencv_python3」

 

3)再次點擊「Configure」。此次確保不會有紅色的報錯。

 

4.Download failed錯誤處理

最多見的錯誤應當是「Download failed」。這要歸功於the wall。因而須要用必定手段手動下載。咱們能夠用如下方法獲取到下載地址。

以ffmpeg下載失敗爲例:

報錯信息形以下圖,咱們看到「Download failed」字樣,確認是下載失敗。

在報錯信息上方咱們能夠找到下載失敗的文件名opencv_ffmpeg.dll。

在下方Call Stack中能夠找到ffmpeg庫的.cmake文件路徑:

 

 

 用notepad或記事本打開ffmpeg.cmake,找到以下字段:

 

咱們能夠看到下載的URL: https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/

其中 ${FFMPEG_BINARIES_COMMIT} 字段的內容能夠在前面的代碼中找到:

 

 

因而咱們獲得了下載的base url:  https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/

咱們再看這段代碼,它在一個foreach循環中:

 

經過以前的代碼咱們能夠看到ids的元素,是BIN32,BIN64,CMAKE,而且緊接着定義了name_BIN32, name_BIN64, name_CMAKE

 

 

再看循環體中的代碼

 

 

咱們能夠明白它是分別下載了這三個文件: 

因而咱們將他們分別和以前獲得的base url拼接成了三個下載地址:

 

 分別粘貼到瀏覽器中下載到自定文件夾。(其中的cmake文件可能不會自動下載,須要在頁面中右鍵點「另存爲」)

 

 

 回到剛纔那個cmake文件,咱們將網址那行代碼註釋掉,替換成剛剛存放下載文件的目錄:

 

 

 

保存後,再次點擊「Configure」。能夠看到ffmpeg再也不報錯:

 

 

 其餘庫下載失敗的問題能夠用一樣的方法解決。

 

5. 編譯生成

第二次「Configure」成功後,點擊「Generate」,而後用對應版本的vs打開生成的工程。

 

 

而後在vs中選擇Build(生成)->Batch Build(批生成)。

在彈出的窗口中勾選ALL_BUILD和INSTALL兩個項目的Debug和Release版,點擊Build(生成)。

 

 

 

 

 

 

大約半小時後,編譯完成:

 

 

編譯結果在install文件夾中:

 

 include裝着頭文件,x64包含64位庫。OpenCV源碼編譯完成。

相關文章
相關標籤/搜索