一、准備工作:
1下載Qt5.10.0 和 Qt Creator 4.5.0軟件(http://download.qt.io/official_releases/qt/)
2.下載opencv3.40 (https://opencv.org/releases.html)
3.下載Cmake3.10.1 (https://cmake.org/download/)
二、軟件安裝
1.qt軟件安裝與配置
①安裝Qt5.10.0,我的安裝路徑:D:\Qt
注意點:在彈出的“選擇組件窗口”中,選擇相關組件(支持QtCreator開發方式如下圖所以,支持VisualStudio開發方式則增加相應的MSVC對應的版本),選擇組件中關於“Strawberry Perl 5.22.1.3”的不勾選(這個組件在非首次安裝時容易報錯且當下學習使用不到),勾選下方工具的MinGw5.3.0設置完畢后,點擊“下一步按鈕”進入下一步安裝即可。

②安裝Qt Creator 4.5.0軟件,安裝D:\Qt目錄下,選項默認即可。

③設置環境變量,在系統環境變量path中添加:
D:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin;
D:\Qt\Qt5.10.0\Tools\mingw530_32\bin
2. CMake安裝和配置
默認安裝,不一定非要安裝在C盤,可以放入與QT安裝的目錄下。
注意點:在安裝過程中勾選“為所有用戶添加環境變量”:Add CMake to the system PATH for all users 。
3.opencv安裝
opencv的安裝實際上是解壓,解壓到用戶指定位置,在這里我的目錄是D:\Qt,這樣安裝路徑統一在同一個文件夾下。
三、Opencv庫的編譯
1.配置CMake編譯條件
①打開CMake(cmake-gui)。
②選擇OpenCV安裝目錄下的源碼文件:D:\Qt\opencv3.40\opencv\sources
③選擇想要編譯輸出目錄文件路徑,如統一存在統一目錄下,在D:\Qt文件下新建一個opencvbuild3.40 文件夾,選擇該路徑: D:\Qt\opencvbuild3.40
④點擊Configure進行配置。

⑤選擇MinGW Makefiles,勾選Special native compilers然后點擊Next

⑥配置編譯器
在下圖1處,C編譯器選擇D:\Qt\Qt5.10.0\Tools\mingw530_32\bin\gcc.exe;
在下圖2處,C++編譯器選擇D:\Qt\Qt5.10.0\Tools\mingw530_32\bin\g++.exe
Fortran不用填寫,然后點擊finish。注意:此過程保證網絡暢通,因為需要下載幾個文件。

⑦等待一會兒后,會有一堆紅色出現,勾選WITH_QT和WITH_OPENGL,不能勾選WITH_IPP(默認不勾選),再次點擊configure。

注意:若仍有紅色出現,再次點擊configure直至紅色消失(有時需要多次,一般情況下兩次即可)。最后,點擊Generate按鈕,完成后即可關閉CMake。
2. 編譯
①在編譯之前,在源目錄D:\Qt\opencv3.4.0\opencv\source\cmake\下找到OpenCVCompilerOptions.cmake文件。
記事本打開文件,找到add_extra_compiler_option(-Werror=non-virtual-dtor)
將它注釋掉,前面加#變成:#add_extra_compiler_option(-Werror=non-virtual-dtor)

②然后按住快捷鍵win+R,運行cmd
進入編譯輸出目錄D:\Qt\opencvbuild3.40,然后輸入”mingw32-make“命令. 備注:加速編譯時間可以使用可選參指令” mingw32-make -j 8 “(處理器是i7-3770為8核),

注意點:編譯opencv,此過程時間較長,電腦編譯了一個多小時。

③直到編譯結束。然后輸入命令:mingw32-make install ,大約一到兩分鍾就安裝完成了。
注意點:若編譯期間出現如下錯誤:
錯誤: ... windres.exe: unknown option -- W ...
根據提示依據如下思路解決: in cmake uncheck ENABLE_PRECOMPILED_HEADERS
即:即在3.1.7步驟中Cmake勾選勾選WITH_QT和WITH_OPENGL時候將ENABLE_PRECOMPILED_HEADERS勾選去除,重新configure 並重新編譯;
錯誤:in the file opencv/sources/modules/videoio/src/cap_dshow.cpp, you have the following error : 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ...
解決:put the following line: #define NO_DSHOW_STRSAFE, before the line : #include "DShow.h"
即:在D:\Qt\opencv3.4.0\opencv\source\modules\videoio\src\cap_dshow.cpp中,在#include “DShow.h“上一行中插入: #define NO_DSHOW_STRSAFE
備注:參考地址:https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows

四、文件大小
不同版本的OpenCV編譯安裝后的文件不同,3.4.0版本編譯后750M
使用2.4.13.3版本文件有1.98G。若需要裁剪傾向請參考如下博文:https://www.cnblogs.com/TooyLee/p/6438070.html
備注:想生成目錄結構到txt文件,可在cmd中轉到某目錄,輸入tree /f > list.txt


五、使用Qt 加載OpenCV配置
①環境變量添加D:\Qt\opencvbuild3.40\install\x86\mingw\bin

②打開Qt Creator新建項目(非Qt項目,純C++應用),命名為OpenCV后,打開OpenCV.pro文件,添加如下語句:
INCLUDEPATH += D:\Qt\opencvbuild3.40\install\include
LIBS += -L D:\Qt\opencvbuild3.40\install\x86\mingw\bin\libopencv_*.dll
LIBS += -L D:\Qt\opencvbuild3.40\install\x86\mingw\lib\libopencv_*.a

③右擊項目文件OpenCV文件夾,選擇“執行qmake“編譯后即可。
六、測試示例程序
1 #include <iostream> 2 #include <opencv2/core/core.hpp> 3 #include <opencv2/highgui/highgui.hpp> 4 using namespace cv; 5 using namespace std; 6 int main() 7 { 8 cv::Mat image; 9 std::cout << "This image is " << image.rows << " x " << image.cols << std::endl; 10 //絕對路徑+圖片名稱 11 image = cv::imread("E:\\QT Project\\OpenCV\\rose.png"); 12 if (image.empty()) 13 { 14 std::cout << "Can’t loading images. " << std::endl; 15 return -1; 16 } 17 cv::namedWindow("Original Image"); 18 cv::imshow("Original Image", image); 19 cv::waitKey(0); 20 return 0; 21 }

