OpenCV 4 + contrib 編譯 with CMake windows


1.源碼下載

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

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

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

 

 

 默認的是“master”分支,我們需要點擊“Branch:master”按鈕,點擊“Tags”標簽,在下拉列表中選擇想要的版本。本文以4.1.0為例。

本體和擴展模塊選擇同樣的分支:

     

 

 選擇“Download ZIP”下載到本地

 

 

 

2.CMake首次設置

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

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

 

 

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

 

 

 注意:

路徑中不能有中文

確保目標路徑的硬盤剩余空間在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源碼編譯完成。

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM