windows 源碼安裝 opencv + opencv_contrib

自從這次安裝OpenCV後,我明白了一個道理:教程得看官方的。畢竟網上滿天飛的教程背後的作者水平未知,不知道每一步爲什麼要這麼幹,也就不可能知道需要注意什麼,也就導致了教程裏說的頭頭是道,看教程的人死活安裝不上。

強烈建議有能力的話自己看OpenCV官方教程Installation in Windows中的Installation by Making Your Own Libraries from the Source Files那部分

我在OpenCV官方教程的基礎上,根據自己的操作和需求,記錄了這次安裝過程。

準備

  1. 軟件:CMake,Visual Studio 2017(其他版本的都可以)
  2. 按自己的需求創建文件夾OpenCV。我創建在D:\Library下面。
  3. OpenCV下面創建tempbuild文件夾。temp用來存放編譯時的臨時文件,後面會刪掉;build用來存放最終安裝好的文件(就跟opencv官網上已經打包好的window版本的opencv一樣)
  4. 到Github上下載opencvopencv_contrib源碼,分別放在OpenCV文件夾下的sourcesopencv_contrib-3.4兩個文件夾中
    注意:默認的branch是master,表示最新的版本(4.x)。如果要選擇3.x版本的話,修改branch就好了,而且opencv和opencv_contrib的版本要對應
    在這裏插入圖片描述
  5. (可選)在後續CMake編譯的時候會下載一些文件,但是網絡問題可能會導致下載不下來(如下圖),所以如果你需要那些文件對應的功能的話,就需要自己手動下載那些文件,然後修改代碼中的路徑。
    在這裏插入圖片描述
    "Download"後面對應的就是文件名,比如bootstdesc_lbgm.i。那個文件的下載地址所在的代碼文件在“Call Stack (most recent call first)”的下一行,比如D:\Library\OpenCV\opencv_contrib-3.4\modules\xfeatures2d\cmake\download_boostdesc.cmake。打開這個代碼文件,找到需要下載文件的URL中帶http字樣的那行,例"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${OPENCV_3RDPARTY_COMMIT}/"。其中,$(·)表示變量,去上文找到它的取值,帶入URL中。最後在URL後面接上文件名,得到下載路徑,比如"https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/bootstdesc_lbgm.i"
    在這裏插入圖片描述
    將所有下載好的文件統一放在一個文件夾,比如我放在OpenCV文件夾下的opencv_need文件夾下面。然後把所有的URL改成"file:///D:/Library/OpenCV/opencv_need/"
    我把所有手動下載的文件整理了一個表格
文件名 .cmake文件位置 下載連接
opencv_ffmpeg.dll D:\Library\OpenCV\sources\3rdparty\ffmpeg\ffmpeg.cmake https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/opencv_ffmpeg.dll
opencv_ffmpeg_64.dll 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/opencv_ffmpeg_64.dll
ffmpeg_version.cmake 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/ffmpeg_version.cmake
ippicv_2019_win_intel64_20180723_general.zip D:\Library\OpenCV\sources\3rdparty\ippicv\ippicv.cmake https://raw.githubusercontent.com/opencv/opencv_3rdparty/32e315a5b106a7b89dbed51c28f8120a48b368b4/ippicv/ippicv_2019_win_intel64_20180723_general.zip
boostdesc_bgm.i D:\Library\OpenCV\opencv_contrib-3.4\modules\xfeatures2d\cmake\download_boostdesc.cmake https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i
boostdesc_bgm_bi.i 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i
boostdesc_bgm_hd.i 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i
boostdesc_binboost_064.i 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i
boostdesc_binboost_128.i 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i
boostdesc_binboost_256.i 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i
boostdesc_lbgm.i 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i
vgg_generated_48.i D:\Library\OpenCV\opencv_contrib-3.4\modules\xfeatures2d\cmake\download_vgg.cmake https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i
vgg_generated_64.i 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i
vgg_generated_80.i 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i
vgg_generated_120.i 同上 https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i
face_landmark_model.dat D:\Library\OpenCV\opencv_contrib-3.4\modules\face\CMakeLists.txt https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat

CMake

  1. 打開CMake-GUIWhere is the source code選擇opencv的源文件,比如D:/Library/OpenCV/sourcesWhere to build the binaries選擇保存路徑,比如D:/Library/OpenCV/temp。然後點擊左下角的Configure(這是第一次),彈出窗口讓你選擇編譯器,我選擇的時是vs2017x64。其他默認。
    在這裏插入圖片描述
    完成後顯示如下:一片紅色(參數) + Configuring done。
    在這裏插入圖片描述
  2. 紅色的一片表示要編譯的參數,根據自己的心情和需求選擇。
  • 找到BUILD_opencv_world,打勾。這個參數可以只生成一個包含了所有的.lib文件,方便後面配置的時候添加。
  • 找到OPENCV_EXTRA_MODULES_PATH,填入opencv_contrib文件夾的路徑,比如D:/Library/OpenCV/opencv_contrib-3.4/modules注意:是/,不是\)
  • 由於我用不到python的,所以我把所有python的參數都清空了。
    在這裏插入圖片描述
  • WITH的參數表示庫(packages ),根據自己需求選擇,我沒有改動。

從官方教程上搬運了一些參數的意思,參考參考,根據自己的需求選擇

  • BUILD_DOCS -> It creates two projects for building the documentation of OpenCV (there will be a separate project for building the HTML and the PDF files). Note that these are not built together with the solution. You need to make an explicit build project command on these to do so.
  • BUILD_EXAMPLES -> OpenCV comes with many example applications from which you may learn most of the libraries capabilities. This will also come handy to easily try out if OpenCV is fully functional on your computer.
  • BUILD_PACKAGE -> Prior to version 2.3 with this you could build a project that will build an OpenCV installer. With this, you can easily install your OpenCV flavor on other systems. For the latest source files of OpenCV, it generates a new project that simply creates a zip archive with OpenCV sources.
  • BUILD_SHARED_LIBS -> With this you can control to build DLL files (when turned on) or static library files (*.lib) otherwise.
  • BUILD_TESTS -> Each module of OpenCV has a test project assigned to it. Building these test projects is also a good way to try out, that the modules work just as expected on your system too.
  • BUILD_PERF_TESTS -> There are also performance tests for many OpenCV functions. If you are concerned about performance, build them and run.
  • BUILD_opencv_python -> Self-explanatory. Create the binaries to use OpenCV from the Python language.
  • BUILD_opencv_world -> Generate a single “opencv_world” binary (a shared or static library, depending on BUILD_SHARED_LIBS) including all the modules instead of a collection of separate binaries, one binary per module.
  1. 再次點擊Configure(這是第二次),如果參數都填正確的話,所有的紅色都會變成白色(否則表示填錯了)。
    在這裏插入圖片描述

  2. 沒有報錯(紅色)的情況下,點擊Generate,完成後如下圖。在這裏插入圖片描述

Visual Studio 2017

  1. temp文件夾下會有一個工程文件,打開。如果用的是Visual Studio,文件名爲OpenCV.sln。等待IDE讀取完所有文件,然後左下角會顯示“就緒”
    在這裏插入圖片描述
  2. 選擇配置爲Debug,平臺爲x64。平臺必須跟CMake中選的一致。
    在這裏插入圖片描述
  3. 解決方案資源管理器中,找到ALL_BUILD,右鍵,點擊生成
    在這裏插入圖片描述
  4. 等待完成。如果沒有報錯,則進行下一步。報錯了的話,可以查看錯誤列表
    在這裏插入圖片描述
  5. 將第二步的Debug改成Release,然後重複第二步~第四步。
  6. 在上面都沒有出錯的情況下,在解決方案資源管理器中,找到INSTALL,右鍵,點擊生成
    在這裏插入圖片描述

檢查

進入D:\Library\OpenCV\temp\bin\Debug(Debug可以換爲Release),可以看到.exe、dll等一些文件。

  1. 在當前目錄下打開cmd或者Powershell
  2. 運行.\example_cpp_opencv_version.exe,效果如下
    在這裏插入圖片描述
  3. D:\Library\OpenCV\sources\samples\data中的left01.jpg-left14.jpgright01.jpg-right14.jpgstereo_calib.xml拷貝到當前目錄,然後運行example_cpp_stereo_calib.exe,效果如下
    在這裏插入圖片描述
  4. 其他的.exe可以自己試試,如果不知道需要什麼文件,直接運行.exe一般都會有提示信息的。例如
    在這裏插入圖片描述

環境變量

系統變量或者用戶變量

  1. 新建一個變量,變量名OPENCV_DIR變量值D:\Library\OpenCV\build\x64\vc15
  2. 在Path中添加一個值,爲D:\Library\OpenCV\build\x64\vc15\bin
  • 方法一:打開cmd或powershell,輸入

整理文件

  1. .\temp\install文件夾裏的所有內容剪貼到build文件夾中
  2. temp文件夾下的bin文件夾,剪貼到build文件夾中(最後我嫌棄bin\Debug佔用空間太大了,把除.dll文件以外的所有文件都刪了)
  3. 刪除temp文件夾

現成下載

如果你的需求是opencv 3.4.9 + opencv_contrib 3.4 + vs2017 + x64,我把最終的OpenCV打包了,需要的自取:
鏈接:https://pan.baidu.com/s/1GS_8-wkBH37GjCtFQtV1-A 提取碼:yemg

如果你想支持一下我,我把build打包上傳到csdn了(因爲有大小限制,所以刪除了bin\Debug裏面除了.dll以外所有的文件),一個積分哦:https://download.csdn.net/download/OTZ_2333/12265696
使用方法:解壓到任何你想存放的地方。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章