一、准備工作:
1下載Qt5.7.1軟件qt-opensource-windows-x86-mingw530-5.7.1.exe(http://download.qt.io/official_releases/qt/5.7/5.7.1/)
2.下載opencv3.1 OpenCV for Windows(http://opencv.org/downloads.html)
3.下載Cmake3.7.2 cmake-3.7.2-win64-x64.msi(https://cmake.org/download/)
二、軟件安裝
1.qt軟件安裝與配置
默認安裝即可,然后設置環境變量,在系統環境變量path中添加:
C:\Qt\Qt5.7.1\5.7\mingw53_32\bin;C:\Qt\Qt5.7.1\5.7\mingw53_32\bin
2.CMake安裝和配置
默認安裝,注意在安裝過程中勾選“為所有用戶添加環境變量”:Add CMake to the system PATH for all users 。
3.opencv安裝
opencv的安裝實際上是解壓,解壓到用戶指定位置,在這里我的目錄是D:\Program Files\opencv
三、opencv庫的編譯
1.配置CMake編譯條件
打開CMake(cmake-gui)。
在下圖中1處,選擇源碼目錄,如:D:/Program Files/opencv/sources 。
在下圖中2處,選擇編譯輸出目錄,如 D:/Program Files/opencv/mingw530 。

然后點擊3處Configure,進行配置
在下圖中1處,選擇MinGW Makefiles;在圖中2處選擇,Special native compilers;然后點擊Next

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

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

若仍有紅色出現,再次點擊configure直至紅色消失。最后,點擊Generate按鈕,完成后即可關閉CMake。
2.編譯
在編譯之前,在目錄D:\Program Files\opencv-3.1.0\cmake\下找到OpenCVCompilerOptions.cmake文件。
打開文件,找到add_extra_compiler_option(-Werror=non-virtual-dtor)
將它注釋掉,變成:
#add_extra_compiler_option(-Werror=non-virtual-dtor)

然后按住快捷鍵win+R,運行cmd
進入編譯輸出目錄 D:\Program Files\opencv\mingw530(也可以,按住shift同時右鍵,點擊“在此處打開命令窗口”。)

然后輸入:mingw32-make命令,編譯opencv,此過程時間較長,電腦編譯了一個多小時。

直到編譯結束。然后輸入命令:mingw32-make install ,大約一到兩分鍾就安裝完成了。
四、精簡編譯后的opencv庫文件
編譯完成后會發現目標文件夾有一個多G大小,無需擔心,我們只需要其中的一部分。
網上很多教程都說要:[保留“bin”、“lib”文件夾,再將原始OpenCV庫中的“include”拷貝過來]。這里與其他教程不同的是,我建議只保留 install 文件夾,其他都可以刪除。
詳細解釋如下;觀察install目錄結構:

小技巧:想生成目錄結構到txt文件,可在cmd中轉到某目錄,輸入tree /f > list.txt。
其中,etc中包含兩類已經訓練好的分類器,分為Haar特征和LBP特征,可以用在人臉識別等程序中;include中是需要的頭文件;x86/mingw中則包含bin和lib兩個文件夾,其中分別是動態鏈接庫和靜態鏈接庫。因此install中已經包含了所有需要的文件。
而install/x86/mingw中的bin和lib與上層目錄中的bin和lib有什么區別呢?觀察可以發現,install中的bin和lib中少了很多文件名中有“pref”和“test”的文件,這些文件實際上是不需要的。因此只保留install文件夾是最不浪費空間的做法。
刪除其他無用的文件夾后,我們所需的庫文件只有62.3 MB,壓縮一下只有14 MB,這已經很小了。我將制作好的庫文件上傳到了雲盤中,需要的話可以在最下方下載。
五.Qt Creator 中工程文件的配置
首先將編譯好的庫添加進環境變量,如 D:\opencv_mingw530\install\x86\mingw\bin ,如不添加則會出現程序編譯通過但運行時提示“程序異常結束”的問題。
小提示:每次添加或刪除環境變量后,都要重啟Qt Creator才能生效。
打開Qt Creator,新建工程或者在已有工程文件中打開.pro文件,添加包含頭文件的語句:
INCLUDEPATH += D:\opencv_mingw530\install\include
接下來,如果你想使用動態鏈接庫,則再添加:
LIBS += -L D:\opencv_mingw530\install\x86\mingw\bin\libopencv_*.dll
而如果你想使用靜態連接庫,則要添加:
LIBS += -L D:\opencv_mingw\install\x86\mingw\lib\libopencv_*.a
這里都是使用了“*”包含了所有的鏈接庫,如果想只用一部分則可以這樣輸入:
LIBS += -L D:\opencv_mingw530\install\x86\mingw\bin\libopencv_calib3d320.dll \ libopencv_core320.dll \ ...
小提示:帶空格的庫路徑是不能直接使用的,需要按如下格式輸入:
INCLUDEPATH += \$\$quote(D:\opencv_mingw530\install\include)
LIBS += -L \$\$quote(D:\opencv_mingw530\install\x86\mingw\bin\libopencv_*.dll)
在工程上右鍵點擊執行QMake 。

之后進行正常的編譯運行即可。
6. 示例程序
網絡上的教程到最后示例程序這一步時,很多都是將Qt的原有結構刪除,直接給一個opencv的簡單程序就完事兒,一般都是顯示一張圖片。
我這里高級一點,給一個調用攝像頭並顯示圖像的簡單示例。這個程序摘自毛星雲(淺墨)的《OpenCV3編程入門》。
#include <opencv2/opencv.hpp> using namespace cv; int main() { //【1】從攝像頭讀入視頻 VideoCapture capture(0); //【2】循環顯示每一幀 while(1){ Mat frame; //定義一個Mat變量,用於存儲每一幀的圖像 capture>>frame; //讀取當前幀 imshow("video",frame); //顯示當前幀 waitKey(30); //延時30ms } return 0; }
主要參考博客:http://www.cnblogs.com/howlclat/p/6433097.html
http://blog.sina.com.cn/s/blog_92bfe91b0102vvvn.html
