OpenCV 4.3.0 版本,在4月份發布了,新加的功能說明如下:
https://github.com/opencv/opencv/wiki/ChangeLog#version430
其中,imgproc 模塊的 HoughCircles() 函數,新加了檢測算法 HOUGH_GRADIENT_ALT,精度得到了很大的提升

另外,國內團隊 Open AI Lab 將他們的 Tengine 庫集成到了DNN 模塊中,提升了 DNN 運行在 ARM 平台中的速度

本文以 Win10 64 位 為例,簡述 cmake 編譯 OpenCV 過程 (如果是 32 位系統,則對應 32位 的 cmake 和 Qt 軟件)
1 下載准備
1.1 Win10
Windows 10 專業版,64 位
注:安裝 VS 2019 時,要求操作系統 Win7 SP1 以上版本
1.2 VS or Qt
選擇一: Visual Studio 2019,社區版,下載鏈接 https://www.visualstudio.com/downloads/
選擇二: VS2019 + Qt 5.12.8,對應 qt-opensource-windows-x86-5.12.8.exe,下載地址 http://download.qt.io/archive/qt/
注:雖然 Qt 是開源的,但是在下載時,需要自行注冊賬號,並且遵守一些開源的協議
1.3 cmake
下載 cmake-3.17.1-win64-x64.zip 壓縮包,到 /bin 目錄下,點擊 cmake-gui 運行。
注:根據操作系統的不同,選擇相應的版本,cmake 下載頁 https://cmake.org/download/ 或 https://github.com/Kitware/CMake/releases
1.4 OpenCV
首先,選擇 “Source code”,下載 GitHub 中的 OpenCV 源碼
GitHub 鏈接 https://github.com/opencv/opencv/releases
其次,按照類似的步驟,在 GitHub 中下載 opencv_contrib 的源碼壓縮包
GitHub 鏈接 https://github.com/opencv/opencv_contrib/releases

最后,將兩個 zip 包解壓縮,等待編譯。
2 cmake 編譯
注意: cmake 在編譯過程中,會自動下載一些文件,例如 opencv_ffmpeg.dll 等,因此需要保持網絡暢通。
2.1 運行
在解壓后的 cmake 目錄中,找到 /bin 下的 cmake-gui.exe,點擊運行,如下所示

其中, source 路徑指向解壓后的 “opencv-4.3.0”,build 路徑可指向自己建的一個 “build” 文件夾
注: 此處誤將 source 路徑指向了 "opencv-4.3.0/modules",導致 Configure 時出現如下錯誤

2.2 配置
2.2.1 opencv-maste
設置好路徑后,點擊左下角的 Configure 按鈕,彈出窗口,如下所示

點擊 Finish 按鈕,繼續,此時主界面的 Configure 按鈕變為 Stop,表示配置進行中
注意:如遇到問題,先檢查錯誤信息;再點擊 File -> Delete Cache,退出 cmake-gui,並將 build 文件夾下的內容清空,再重復步驟 2.1 和 2.2,
等 Configure 依次結束后,如果 cmake 的主界面仍有紅色區域,則再次點擊 Configure 進行配置,直到紅色區域完全消失。

下圖是 Configure 完成后的界面,紅色消失,只剩白色的區域

2.2.2 opencv_contrib-master
找到 Name 下的 OPENCV_EXTRA_MODULES_PATH,為其設置 opencv_contrib-4.3.0 的路徑 ,精確到 /modules 目錄

再次點擊 Configure 進行配置,可能需要 Configure 兩三次之后,紅色區域才能完全消失。
最后,點擊 Generate,出現 “Generating done” 則意味着 cmake 的工作結束了。
2.3 VS 生成
2.3.1 Python 問題
因為電腦中裝了 Python 3.6.4,結果在下面步驟的 Debug 模式下,生成時出現了如下錯誤:

這是因為安裝 python 時,並不會安裝 debug 版本,於是,回到 python 安裝界面,選擇 debug 版本

如此,則可在 debug 模式下,順利生成相應的庫文件。
2.3.2 生成庫
進入到生成的 build 目錄下,用 Visual Studio 打開 OpenCV.sln
找到 INSTALL,分別在 Debug 和 Release 下,根據系統選擇 x86 或 x64,鼠標右鍵 -> 生成

將 install 目錄下生成的所有文件,拷貝到需要進行 OpenCV 配置的文件夾中 ( 32 位操作系統,則會生成 x86 文件夾)

3 VS 下的配置
1) 環境變量
計算機 -> 屬性 -> 高級系統設置 -> 環境變量,編輯系統變量里的 path 變量,為其添加變量值 D:\opencv\430\x64\vc16\bin\debug

2) 頭文件和庫文件
頭文件: D:\opencv\430\include
庫文件: D:\opencv\430\x64\vc14\lib\debug

3) 依賴項
生成的 lib 庫,格式為 “opencv_modulename_version_d.lib”,帶 "_d" 的對應 Debug 模式,不帶的對應 Release 模式。
可根據需要,添加相應的靜態庫。 例如,人臉識別時,用到 face 模塊,可在依賴項中,添加 opencv_face4xxd.lib

4 Qt 下的配置
1) 環境變量
與 VS 的配置一樣,添加 path 變量值 D:\opencv\430\x64\vc16\bin\debug;
另外,不要忘記添加 Qt 的 path 變量值 D:\Qt\Qt5.12.8\5.12.8\msvc2017_64\bin;
2) 頭文件和庫文件
以簡單的讀圖程序為例,需要在新建的 Qt 工程配置文件中,添加如下代碼:
LIBS += -L$$PWD/../../opencv/430/x64/vc16/lib/debug -lopencv_highgui430d \ -lopencv_core430d \ -lopencv_imgproc430d \ -lopencv_imgcodecs430d INCLUDEPATH += $$PWD/../../opencv/430/include
可根據具體的需要,適當添加新的庫文件,比如,用於人臉識別的 opencv_face430d,深度神經網絡 opencv_dnn430d 等等。
配置完成,盡情享受 OpenCV 的世界吧 ^_^
更新記錄
2017年05月09日: 升級為 Win 64 位系統,CMake 3.8.1,OpenCV 3.2,Qt 5.8,結果在 “2.3 2) INSTALL 生成” 處卡了,生成不成功。
2017年10月12日: 升級為 Win10 64 位系統,CMake 3.10.0,OpenCV 3.3,Qt 5.9.1,生成並配置成功。
2017年12月26日: 升級為 OpenCV 3.4,Qt 5.9.3,CMake 3.10.0,生成並配置成功。
2018年05月03日: 升級為 Opencv 3.4.1,Qt 5.9.5,CMake 3.10.3,生成並配置成功。
2018年11月21日: 升級為 Opencv 4.0.0,Qt 5.9.6,CMake 3.13.0,新加的 opencv_gapi 模塊出現編譯錯誤,生成不成功,其它模塊生成並配置成功。

2019年4月11日:升級為 OpenCV 4.1.0,Qt 5.12.2,CMake 3.14.1,還是 opencv_gapi 模塊出現編譯錯誤,生成不成功,其它模塊生成並配置成功。
2019年10月10日:升級為 OpenCV 4.1.1,Qt 5.12.5,CMake 3.15.4,仍有 opencv_gapi 模塊出現編譯錯誤,生成不成功,其它模塊生成並配置成功。
2020年04月12日:升級為 OpenCV 4.3.0,Visual Studio 2019,Qt 5.12.8,CMake 3.17.1,生成並配置成功。
