qtCreator中配置opencv和mingw

stone100136發表於2015-05-08

1. 下載各種軟體資源

  • opencv
    下載自己對應的版本,主要是用它裡面的原始碼進行編譯
    這是下載連結
  • QTCreator
    最好下載離線安裝包,也可以在bt站下,最好下載mingw32版的,比較省事,已經安裝了的也可以用原來的
    這是下載連結

這裡寫圖片描述

  • Rapid Environment Editor
    編輯系統變數的神器,可選
  • CMake
    用來寫makefile的工具
    這是下載連結
  • mingw32
    用來呼叫make和gcc等工具
    這是下載連結
  • Cmder
    windows命令列工具,可選

2. 安裝QTCreator

安裝中,如果是可以選擇mingw的話最好選上,後面會比較省事

qt選項

3. 安裝mingw

如果前面安裝了mingw的話,應該是可以省去的,主要是安裝gcc,gdb等工具

選擇

安裝完之後是設定環境變數,這一步比較重要,新增以下環境變數,如果沒有,要自己新建
變數名 :PATH 值為:C:\MinGW\bin (即你的安裝目錄的bin資料夾的路徑)
變數名 :LIBBRARY_PATH 值為:C:\MinGW\lib

mingw環境變數

要驗證環境變數是否配置成功,只需要在命令列輸入mingw32-make或mingw32-gcc,如果顯示如下內容,則配置成功(環境變數如果要生效,貌似要重啟一下)

檢查mingw32環境變數

4. 安裝CMake

5. 編譯opencv

  • 解壓opencv,主要是用裡面的opencv->source資料夾
  • 開啟CMake,設定sourcebuild資料夾
    CMake

  • 點Configure,CMake會根據opencv->source資料夾裡的CMakeLists檔案裡的配置自動生成Makefile

CMake

  • 選擇MinGW,如無意外點finish就好了,之後點Generate就好了,剩下就是等他生成了

mingw

mingw

  • 開啟命令列,切換到剛剛build的目錄下,輸入mingw32-make,就會開始編譯了,這一步會比較費時間,大概半個小時到一個小時,之後就算完成編譯工作了,我們主要是用生成的lib和bin,如果想精簡一下的話,可以把其他檔案都刪掉
    編譯

接下來是比較重要的一步,設定opencv的環境變數,在PATH中新增編譯生成的資料夾裡的bin目錄,我一開始沒有新增這個,程式雖然可以編譯,但並不能執行,估計是找不到動態連結庫。

opencv環境變數

6.設定QTCreator

如果是安裝了自帶mingw32的QTCreator的話,則不需要這一步,這一步主要是配置qtCreator編譯時呼叫的編譯器和偵錯程式

開啟工具->選項->構建和執行,點新增

新增套件

配置相應的編譯器和偵錯程式,如果前面配置沒有問題的話,應該是可以自動檢測到mingw32的位置的,但需要注意的是偵錯程式好像是不能用mingw32的,要重新下一個qt對應的
這是下載連結

編譯器

偵錯程式

自動檢測

完成這一步,普通的qt程式應該是可以編譯的

7. 配置工程檔案

QTCreator中工程的配置都寫在.pro中,我們使用第三方庫時,都需要在工程檔案中新增這個庫的包含檔案和庫檔案的配置,因此這一步在每一次寫工程時都需要設定。新建一個控制檯程式

新建

pro

在pro檔案新增如下語句,根據自己的情況具體調整

INCLUDEPATH += C:\OpenCV\build\include
INCLUDEPATH += C:\OpenCV\build\include\opencv
INCLUDEPATH += C:\OpenCV\build\include\opencv2

LIBS += C:\opencv\sources\build-mingw\lib\libopencv_calib3d249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_contrib249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_core249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_features2d249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_flann249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_gpu249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_highgui249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_imgproc249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_legacy249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_ml249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_nonfree249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_objdetect249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_ocl249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_photo249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_stitching249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_superres249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_ts249.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_video249.dll.a
LIBS += C:\opencv\sources\build-mingw\lib\libopencv_videostab249.dll.a

到目前為止,配置完成,大家可以執行一下這個範例程式

#include <iostream>
#include <opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
    Mat image=imread("test.jpg");
    imshow("image",image);
    waitKey(0);
    return 0;
}

關於程式中讀取檔案放在哪裡的問題,當程式編譯過一次之後,會在工程目錄的同級目錄下生成一個新的資料夾,各種需要讀取的檔案可以往裡面放。

資料夾

test

執行成功的畫面

執行成功

在windows下折騰了一段時間,總結出一個結論就是windows最好還是乖乖地用vs吧,別啥折騰了╮( ̄▽ ̄)╭

相關文章