有兩種建置OpenCV的方式,分別為:
這篇會講解如何使用MinGW對OpenCV進行編譯建置,當然如果你想用其他安裝方式也是OK的:
無論你選擇使用哪一種方式,需要先安裝CMake 3.27.1、建立工作環境、下載OpenCV的第三方模組。
CMake是一個開源的跨平台建置工具,它能夠自動生成用於各種開發環境的建置腳本。安裝CMake是編譯OpenCV的必要步驟,這將幫助你配置和生成相應的專案檔案。前往CMake官方網站,下載Windows x64 Installer,在安裝的過程中Installer會主動提示是否要將cmake加入到環境變數Path,請打勾。
打開命令提示字元,輸入以下命令檢查 CMake 是否安裝成功。如果安裝成功,你會看到 CMake 的版本信息。
cmake --version
新增工作資料夾,在哪裡都可以,本篇放在下載資料夾下。
mkdir %userprofile%\downloads\opencv_workspace
從OpenCV的官方網站下載最新版本的OpenCV原始碼,點選下載Sources,將壓縮檔解壓縮到opencv_workspace資料夾下,本篇使用OpenCV 4.8.0。將解壓縮後的opencv-4.8.0資料夾更名為opencv_workspace\sources
。
OpenCV Contrib包含了一些額外的功能和模組,這些模組可能對你的應用非常有用。
請到opencv_contrib,選擇要使用的OpenCV版本Tag如4.8.0
,點選Code按鈕以後按Download ZIP,解壓縮到opencv_workspace
目錄。
當然如果你的電腦有git的話,也可以使用git clone指令下載opencv_contrib 4.8.0版本,到opencv_workspace
目錄。
git clone --depth 1 --branch 4.8.0 https://github.com/opencv/opencv_contrib.git
為了讓Windows作業系統也可以使用g++、gcc和make指令,需要先安裝MinGW。到SourceFroge下載 MinGW-w64 - for 32 and 64 bit Windows Files,資料夾內的x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z,解壓縮並放在C:\mingw64
。
注意必須選擇threads-posix版本,如果選擇threads-win32會造成後續在make的時候出現編譯錯誤。
以系統管理員開啟命令提示字元,快捷鍵Win+R,輸入cmd,按Enter,輸入以下命令,新增環境變數MINGW64_DIR。
setx -m MINGW64_DIR C:\mingw64
開啟設定,系統>關於>進階系統設定>環境變數,將%MINGW64_DIR%\bin
新增到系統變數Path中。
重新開啟命令提示字元,輸入下方命令檢查mingw是否正確安裝。如果安裝成功,你會看到 g++、gcc和make的版本資訊。
g++ -v
gcc -v
mingw32-make -v
開啟CMake(cmake-gui)。完整CMake配置項目請參考 OpenCV configuration options reference。
選擇原始碼資料夾opencv_workspace\sources
。
選擇build資料夾opencv_workspace\build-mingw
,如下圖(1)。
按下Configure,跳出一個選擇Generator的視窗,選擇MinGW Makefiles,如下圖(2)。。
搜尋BUILD_opencv
,將顯示出的所有選項打勾,特別是BUILD_opencv_world。
搜尋CMAKE_INSTALL_PREFIX
,將欄位更改成opencv_workspace\build
,這個資料夾就是將來動態連結庫(DLL)存放的位置,如下圖(3)。
搜尋OPENCV_EXTRA_MODULES_PATH
,將欄位更改成opencv_workspace/opencv_contrib/modules
,如下圖(4)。。
搜尋CMAKE_BUILD_TYPE
,更改成Debug或Release可以調整OpenCV的版本,但因為開發的過程難免或需要使用Break point去監控程式的執行狀況,因此建議選擇Debug版本。當然,你也可以兩個版本都進行建置,等到Debug建置安裝完成以後再更改CMAKE_BUILD_TYPE
成Release。
再按一次Configure。
按下Generate,生成MinGW的Makefiles。
開啟cmd,移動到opencv_workspace\build-mingw
資料夾,輸入mingw32-make -j8
指令編譯OpenCV,-j8
的意思是使用8個執行續編譯,如果電腦效能撐不住,可以考慮調降這個數字。接下來輸入mingw32-make install
安裝OpenCV。
mingw32-make -j8
mingw32-make install
完成安裝後就會看到opencv_workspace\build\x64\mingw
資料夾,底下有lib
靜態連結函式庫資料夾和bin
動態連結函式庫。
為了讓將來的程式可以找到libopencv_world480.dll
動態連結函式庫,將opencv_workspace\build\x64\mingw\bin
的完整路徑加入至Path變數中。