OpenCV:https://github.com/opencv/opencvpython
contrib:https://github.com/opencv/opencv_contribgit
注意本體和contrib的版本匹配,詳見如下:github
默認的是「master」分支,咱們須要點擊「Branch:master」按鈕,點擊「Tags」標籤,在下拉列表中選擇想要的版本。本文以4.1.0爲例。算法
本體和擴展模塊選擇一樣的分支:瀏覽器
選擇「Download ZIP」下載到本地架構
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)點擊「完成」進行第一次編譯。此次編譯可能會報錯,但不用去管。咱們會發現出現了不少紅色背景的選項。
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」。此次確保不會有紅色的報錯。
最多見的錯誤應當是「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再也不報錯:
其餘庫下載失敗的問題能夠用一樣的方法解決。
第二次「Configure」成功後,點擊「Generate」,而後用對應版本的vs打開生成的工程。
而後在vs中選擇Build(生成)->Batch Build(批生成)。
在彈出的窗口中勾選ALL_BUILD和INSTALL兩個項目的Debug和Release版,點擊Build(生成)。
大約半小時後,編譯完成:
編譯結果在install文件夾中:
include裝着頭文件,x64包含64位庫。OpenCV源碼編譯完成。