Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的開發環境配置


2017-2-23 Update: 修改並添加了部分細節

最近正在學習OpenCV ,為畢業設計做准備。Windows版本的OpenCV都默認提供對VS的支持,其在VS中的配置比較簡單,網上也有大批教程詳細描述了配置步驟。但在使用Qt Creator時的配置就較為繁瑣,網絡上大多數教程使用的軟件版本也比較陳舊,經反復嘗試后終於成功,特將配置步驟記錄下來,以便以后及他人查閱參考。

我將編譯好的庫文件上傳到了雲盤中,如果你的開發環境與我相同,可以在最下方直接下載。

1. 前期准備

本機環境及使用軟件:

另外:本機中還安裝了VS2015,它的影響會在下文中提及。

首先,建議上述所有軟件的安裝路徑都不要包含中文或空格

OpenCV 目前(2017.2)最新版本為3.2.0。安裝OpenCV其實就是解壓,盡量解壓在某盤根目錄或較短的目錄下,我們只用其中的“sources”文件夾。對於本文來說,因為需要重新編譯源碼,也可以只到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

確保上述軟件安裝好之后,可進行下一步操作。

2. CMake中的操作

打開CMake (cmake-gui)。

第一行源代碼位置,選擇 ..\opencv\sources 文件夾,如:D:\opencv\sources

第二行是編譯輸出的目錄,建議放在某盤根目錄或較短的目錄下,如 D:\opencv_mingw

cmake step1

點擊configure,在彈出窗口的下拉列表里選擇MinGW Makefiles,選項選擇Specify native compilers,點擊Next;

注:因為本機中安裝了VS,如果選擇第一項“適用默認本地編譯器“,會使用VC編譯器。而我們需要為Qt使用mingw的編譯器,因此需要手動指定編譯器。如果讀者也安裝過VS,則需注意這個問題。

cmake step2

指定編譯器,在Qt自帶的MinGW的目錄下:

  • C 編譯器:C:/Qt/Qt5.7.0/Tools/mingw530_32/bin/gcc.exe
  • C++編譯器:C:/Qt/Qt5.7.0/Tools/mingw530_32/bin/g++.exe
  • Fortran不用填寫

cmake step3

點擊finish,此過程必須聯網,因為需要下載幾個文件。

等待一會兒后,會有一堆紅色出現,無需擔心。找到並勾選WITH_QT,如果要用OpenGL的功能可以勾選WITH_OPENGL不能勾選WITH_IPP(默認不勾選)

有的教程上說要在CMAKE_BUILD_TYPE處添加“Debug” ,不添加也不影響。

這里寫圖片描述

再次點擊configure,若還有紅色出現,再點擊configure直到紅色消失。

點擊Generate按鈕,完成后即可關閉CMake。

3. cmd下的操作

首先必須在環境變量中添加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 ,稍等即可。

4. 精簡編譯好的庫文件

編譯完成后會發現目標文件夾有一個多G大小,無需擔心,我們只需要其中的一部分。

網上很多教程都說要:[保留“bin”、“lib”文件夾,再將原始OpenCV庫中的“include”拷貝過來]。這里與其他教程不同的是,我建議只保留 install 文件夾,其他都可以刪除。

詳細解釋如下;觀察install目錄結構:

fig5

小技巧:想生成目錄結構到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,這已經很小了。我將制作好的庫文件上傳到了雲盤中,需要的話可以在最下方下載。

5.Qt Creator 中工程文件的配置

首先將編譯好的庫添加進環境變量,如 D:\opencv_mingw\install\x86\mingw\bin ,如不添加則會出現程序編譯通過但運行時提示“程序異常結束”的問題。

小提示:每次添加或刪除環境變量后,都要重啟Qt Creator才能生效。

打開Qt Creator,新建工程或者在已有工程文件中打開.pro文件,添加包含頭文件的語句:

INCLUDEPATH += D:\opencv_mingw\install\include

接下來,如果你想使用動態鏈接庫,則再添加:

LIBS += D:\opencv_mingw\install\x86\mingw\bin\libopencv_*.dll

而如果你想使用靜態連接庫,則要添加:

LIBS += D:\opencv_mingw\install\x86\mingw\lib\libopencv_*.a

這里都是使用了“*”包含了所有的鏈接庫,如果想只用一部分則可以這樣輸入:

LIBS += D:\opencv_mingw\install\x86\mingw\bin\libopencv_calib3d320.dll \
												libopencv_core320.dll \
												...

小提示:帶空格的庫路徑是不能直接使用的,需要按如下格式輸入:

INCLUDEPATH += $$quote(D:\Program Files\opencv_mingw\install\include)

LIBS += -L $$quote(D:\Program Files\opencv_mingw\install\x86\mingw\bin\libopencv_*.dll)

在工程上右鍵點擊執行QMake

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;
}

如果配置正確而且用的是筆記本,應該會出現自己的臉。這時可以用鼠標滾輪放大縮小一下看看效果:

example

但是,如果不去利用Qt設計界面的便捷特性,只是使用Qt Creator這個IDE寫着跟VS下一樣的程序,有什么意義呢?

所以我想提供一個讓OpenCV 與Qt 結合使用的例子,示例程序可以參看我翻譯的幾篇國外網站上的[OpenCV Qt教程] !


編譯好的庫文件:http://pan.baidu.com/s/1c2MNJ9I

本人在配置過程中主要參考了以下兩篇文章。

http://stackoverflow.com/questions/15881913/how-to-link-opencv-in-qtcreator-and-use-qt-library

http://blog.csdn.net/qq_28839293/article/details/52230111


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM