Qt | mingw+cmake編譯Opencv4.1.2
阿新 • • 發佈:2021-07-05
OpenCV
獲取 OpenCV
從官網下載 openCV。在本指南中,使用版本4.1.2。啟動 opencv-3.2.0-vc14.exe 並讓它解壓到 d:\ 。現在資料夾 d:\opencv _4.1.2_Sources已建立。
將 minGW 新增到 windows PATH 變數
開啟控制面板, 系統和安全, 系統, 高階系統設定, 環境變數, 系統變數, 變數名稱:路徑 變數值:;E:\Qt\Tools\mingw810_32\bin
PS:64位的則新增
E:\Qt\Tools\mingw810_64\bin
編譯 OpenCV
啟動 cmake-gui.exe 然後選擇以下設定:
原始碼在哪裡:D:/opencv_4.1.2_Sources/opencv-4.1.2 在哪裡構建二進位制檔案:D:/opencv_4.1.2_Sources/opencv-4.1.2/build
然後點選Configure,讓cmake建立build目錄,選擇如下設定:
為此專案指定生成器:MinGW Makefiles 指定本機編譯器,下一步 編譯器 C:E:\Qt\Tools\mingw810_32\bin\gcc.exe 編譯器 C++:E:\Qt\Tools\mingw810_32\bin\g++.exe 結束
選中複選框 [X]WITH_QT 選中複選框 [X]WITH_OPENGL
將D:\opencv_4.1.2_Sources\opencv-4.1.2\CMakeLists.txt開啟新增如下程式碼,儲存後退出將 Qt5_DIR 設定為E:/Qt/5.15.1/mingw81_32/lib/cmake/Qt5
set(CMAKE_PREFIX_PATH "E:/Qt/5.15.1/mingw81_32/lib/cmake/Qt5")
PS:QT的版本看自己的安裝情況而定
取消選中複選框 []ENABLE_PRECOMPILED_HEADERS
然後再次點選配置。
將 QT_MAKE_EXECUTABLE 設定為 D:\Qt\5.9\mingw53_32\bin\qmake.exe 將 Qt5Concurrent_DIR 設定為 D:\Qt\5.9\mingw53_32\lib\cmake\Qt5Concurrent將 Qt5Core_DIR 設定為 D:\Qt\5.9\mingw53_32\lib\cmake\Qt5Core 將 Qt5Gui_DIR 設定為 D:\Qt\5.9\mingw53_32\lib\cmake\Qt5Gui 將 Qt5Test_DIR 設定為 D:\Qt\5.9\mingw53_32\lib\cmake\Qt5Test 將 Qt5Widgets_DIR 設定為 D:\Qt\5.9\mingw53_32\lib\cmake\Qt5Widgets 將 Qt5OpenGL_DIR 設定為 D:\Qt\5.9\mingw53_32\lib\cmake\Qt5OpenGL 將 CMAKE_BUILD_TYPE 設定為 Release
PS:此時生成的庫為分散的,並不是一個dll,引入的時候不方便,可以勾選BUILD_opencv_world將動態庫打包成一個
然後再次點選配置 然後點選生成
接下來開啟cmd,輸入以下命令。為了加快編譯速度,-j 標誌可用於同時執行多個編譯作業。在 8 核 CPU 上,您可以將其設定為 8 或更高,以便使用所有核心。在具有 8GB 記憶體的 [email protected] 核心上,編譯大約需要 6 分鐘。
d: cd d:\ cd opencv-build mingw32-make -j 8 mingw32-make install
如果在檔案 opencv/sources/modules/videoio/src/cap_dshow.cpp 中出現以下錯誤:'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' 未在此範圍內宣告...
試試這個:把下面這行:#define NO_DSHOW_STRSAFE,在行之前:#include "DShow.h"
如果您有錯誤:'nullptr' 未在此範圍內宣告..
試試這個:在 cmake 中選中 ENABLE_CXX11 框
如果在檔案 modules\videoio\src\cap_msmf.cpp 中出現錯誤: using invalid field '{anonymous}::ComPtr<T>::p'..
試試這個:在 cmake 中取消選中 WITH_MSMF