最近正在學習OpenCV ,為畢業設計做準備。Windows版本的OpenCV都默認提供對VS的支持,其在VS中的配置比較簡單,網上也有大批教程詳細描述了配置步驟。但在使用Qt Creator時的配置就較為繁瑣,網絡上大多數教程使用的軟件版本也比較陳舊,經反復嘗試后終于成功,特將配置步驟記錄下來,以便以后及他人查閱參考。
本機環境及使用軟件:
Windows 7 64位OpenCV 3.1.0 : https://sourceforge.net/PRojects/opencvlibrary/files/Qt 5.7.0 : http://www.qt.io/ or http://download.qt.io/MinGW 5.3.0 : 包含在Qt中,無需單獨下載。CMake 3.7.2 : https://cmake.org/首先,建議上述所有軟件的安裝路徑都不要包含中文或空格 。
OpenCV 目前(2017.2)最新版本為3.2.0。安裝OpenCV其實就是解壓,盡量解壓在某盤根目錄或較短的目錄下。對于本文來說,因為需要重新編譯源碼,也可以只到github上下載源碼: https://github.com/opencv/opencv 。
Qt 目前最新版本為5.8.0。鑒于國內網絡環境,建議下載離線版。關于Qt的安裝與配置,可在另一篇博客中查看(未完成),安裝過程中要勾選安裝MinGW。本人使用的版本為: qt-opensource-windows-x86-mingw530-5.7.0 。
CMake主要用來生成Makefiles,與MinGW中的編譯器配合使用。安裝過程中注意勾選“為所有用戶添加環境變量”:Add CMake to the system PATH for all users 。
確保上述軟件安裝好之后,可進行下一步操作。
打開CMake (cmake-gui)。
第一行源代碼位置,選擇 ../opencv/sources 文件夾,如:D:/opencv/sources 。
第二行是編譯輸出的目錄,建議放在某盤根目錄或較短的目錄下,如 D:/opencv_mingw 。

點擊configure,下拉列表里選擇MinGW Makefiles,選項選擇Specify native compilers,點擊Next;

指定編譯器,在Qt自帶的MinGW的目錄下:
C 編譯器:C:/Qt/Qt5.7.0/Tools/mingw530_32/bin/gcc.exeC++編譯器:C:/Qt/Qt5.7.0/Tools/mingw530_32/bin/g++.exeFortran不用填寫
點擊finish,此過程必須聯網,因為需要下載幾個文件。
等待一會兒后,會有一堆紅色出現,無需擔心。找到并勾選WITH_QT,如果要用OpenGL的功能可以勾選WITH_OPENGL,不能勾選WITH_ipP(默認不勾選)
有的教程上說要在CMAKE_BUILD_TYPE處添加“Debug” ,不添加也不影響。

再次點擊configure,若還有紅色出現,再點擊configure直到紅色消失。
點擊Generate按鈕,完成后即可關閉CMake。
首先必須在環境變量中添加mingw的目錄:C:/Qt/Qt5.7.0/Tools/mingw530_32/bin
打開cmd,轉到用CMake生成的目錄,如: cd /d D:/opencv_mingw
小提示:除了cd命令,還可以在要轉到的目錄下按住shift同時右鍵,點擊“在此處打開命令窗口”。
之后輸入 mingw32-make , 之后就開始漫長的等待。。。
[100%] 后輸入 mingw32-make install ,稍等即可。
首先將編譯好的庫添加進環境變量,如 D:/opencv_mingw/bin ,如不添加則會出現程序編譯通過但運行時提示“程序異常結束”的問題。
小提示:每次添加或刪除環境變量后,都要重啟Qt Creator才能生效。
打開Qt Creator,新建工程或者在已有工程文件中打開.pro文件,添加如下兩句:
INCLUDEPATH += D:/opencv_mingw/install/includeLIBS += "D:/opencv_mingw/bin/libopencv_*.dll"這里與很多使用OpenCV 2.4版本的教程不同,使用了動態鏈接庫。
小提示:帶空格的庫路徑是不能直接使用的,需要按如下格式輸入:
INCLUDEPATH += $$quote(D:/Program Files/opencv_mingw/install/include)
LIBS += -L $$quote(D:/Program Files/opencv_mingw/bin/libopencv_*.dll)
在工程上右鍵點擊執行QMake 。

之后進行正常的編譯運行即可。
網絡上的教程到最后示例程序這一步時,很多都是將Qt的原有結構刪除,直接給一個opencv的簡單程序就完事兒,一般都是顯示一張圖片。
我這里高級一點,給一個調用攝像頭并顯示圖像的簡單示例。
#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;}如果配置正確而且用的是筆記本,應該會出現自己的臉。這時可以用鼠標滾輪放大縮小一下看看效果:

但是,如果不去利用Qt設計界面的便捷特性,只是使用Qt Creator這個IDE,寫著跟VS下一樣的程序有什么意義呢?
所以我想提供一個讓OpenCV 與Qt 結合使用的例子,這個例子將在另一篇博客里呈現(未完成)。
本人在配置過程中主要參考了以下兩篇文章。
http://stackoverflow.com/questions/15881913/how-to-link-opencv-in-qtcreator-and-use-qt-library
http://blog.csdn.net/QQ_28839293/article/details/52230111
新聞熱點
疑難解答