在安裝OpenCV時最需要注意的是,OpenCV庫,也就是我們需要的dll和動態庫需要我們使用CMake來生成。
雖然在官網上下載得到的檔案中已經包含了庫檔案和.h等標頭檔案,但是在具體開發中編譯器編譯後的原始檔都會和庫檔案去進行連結。
這就導致不同的編譯器可能需要不同的庫。所以,下載得到原始檔之後,要用指定的編譯器重新編譯。
0. 需要的工具
- Qt Creator
- OpenCV
- CMake
- cmd
1. Qt Creator安裝
這裡Qt Creator的安裝不在贅述,由於Qt提供的線上下載器太慢,可以直接去qt的離線下載介面下載,使用迅雷會比較快。詳細操作可以參考這裡。筆者使用的是5.9.0版本。
注意,這裡需要在環境變數中的Path變數下新增Qt\Qt5.9.0\Tools\mingwxx_xx\bin路徑。例如我在這裡新增了F:\Qt\Qt5.9.0\Tools\mingw530_32\bin,否則後面的CMake可能在Configure過後沒有對應的選項!
2. OpenCV的下載安裝
OpenCV也可以直接在官網下載,這裡選擇對應的Windows版本,下載後安裝。我這裡一開始使用4.5.5在cmd介面編譯時候報錯,後面使用的是3.2.0。
安裝完成後,在環境變數中新增Path變數,我新增的地址為F:\environment\opencv\build\bin。
3. CMake的下載使用
CMake可以直接在官網下載,注意安裝的是帶有介面的cmake-3.6.1-win64-x64.msi。
安裝後開啟cmake-gui.exe,Browse Source下選擇安裝的opencv下的sources資料夾,Browse Build可在opencv下新建一個release目錄並選擇,完整後點選左下角的Configure,選擇MinGW Makefiles。
點選後CMake開始執行,過一段時間,中間會出現許多紅色的選項,勾選WITH_OPENGL和WITH_QT,再次點選Configure。
執行完畢後可能還會出現部分紅色選項,分別以下表選擇對應專案。(有可能只有部分)
Name | Value |
---|---|
QT_QMAKE_EXECUTABLE | .../Qt/Qt5.3.1/5.3/mingw482_32/bin/qmake.exe |
QT_MKSPECS_DIR | .../Qt/Qt5.3.1/5.3/mingw482_32/mkspecs |
QT_QTCORE_LIBRARY_DEBUG | .../Qt/Qt5.3.1/5.3/mingw482_32/bin/Qt5Cored.dll |
QT_QTCORE_LIBRARY_RELEAS | .../Qt/Qt5.3.1/5.3/mingw482_32/bin/Qt5Core.dll |
QT_QTCORE_INCLUDE_DIR | .../Qt/Qt5.3.1/5.3/mingw482_32/include/QtCore/5.3.1/QtCore |
Qt5_DIR | .../Qt/Qt5.3.1 |
注意:如果你在安裝Qt5後,沒有給Qt5新增環境變數的話,那麼在這一步,CMake軟體是不會找到這些和Qt5相關的項的。
配置完成後再次Configure,沒有紅色選項,CMAKE_BUILD_TYPE選擇Release型別,再次點選Configure後沒有報錯,點選Generate。
在Generate結束後需要使用cmd來最後編譯生成我們需要的動態dll庫。
4. 在cmd中使用mingw32-make命令構建dll庫
開啟cmd,使用cd命令進入我們剛才在CMake裡Browse Build選項中選擇的目錄,筆者的為F:\environment\opencv\release。(這裡可能cd不進去,Windows下切換磁碟直接輸入磁碟符+冒號就可以切換到其他盤了)。
f:
cd F:\environment\opencv\release
mingw32-make
等待構建成功後,該目錄下的include目錄和lib目錄下就生成了我們需要的庫了。
5. 在Qt Creator的.pro檔案中新增配置
在你需要使用OpenCV的專案的.pro檔案中新增配置
INCLUDEPATH += E:\opencv-4.0.1-Sources\opencv-build\install\include
LIBS += E:\opencv-4.0.1-Sources\opencv-build\lib\libopencv_*.a