天天看點

Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建

Qt建立Qt控制台應用程式,直接添加工程檔案.pro下的opencv的包含目錄和庫目錄是錯誤的,這會導緻無法使用如imread,imshow等函數。

下面就正式說win7下配置OPENCV的Qt環境開發

下載下傳所需工具:

(1)  opencv2.4.10,新版3.x,因為有很多東西不一樣,容易出錯。官網為http://opencv.org,點選DOWNLOADS,

Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建

找到OpenCV for Windows連結進行下載下傳:

Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建
Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建
Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建

(2)  Qt5.4.1,

http://www.qt.io/download/下載下傳社群版

Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建
Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建

(3)  cmake的下載下傳位址為http://www.cmake.org/download/,windows使用者直接下載下傳其一就行(不管系統幾位,推薦exe安裝,免去設定Path的麻煩):

Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建
Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建

安裝:

Opencv如果你下載下傳的是opencv2.x.exe,直接打開就自動解壓了,解壓到D盤,我這裡得到D:\opencv

Qt的安裝,打開之後到了那個元件選項,點5.4.1,tool中MINGW4.9.1要選中,其餘的看你的需求了。我的也是直接安裝在D盤,路徑為D:\Qt

Cmake的安裝路徑中不能有中文或者括号字元,不能有空格,其中有一個安裝步驟,讓你勾選,勾選那個加入到計算機環境變量中。

下面的步驟來自http://blog.csdn.net/zhaocj/article/details/38944037,趙春江老師的專欄以及其他的一些部落格。

配置:

首先要設定環境變量(右鍵點選“計算機”->屬性->進階系統設定->環境變量),因為我們用的是mingw來編譯,是以要将D:\Qt\Qt5.4.1\Tools\mingw491_32\bin加入到path下,注意切換到英文模式。

點選CMake(cmake-gui)圖示,執行CMake,在Where is the source code欄和Where to build the binaries欄中分别為D:/opencv/soureces和D:/opencv/MinGW。D:/opencv/MinGW為編譯後庫檔案所存放的目錄(可以自定義),需要自己建立該目錄(如果沒有,則會有提示,選擇Yes建立)。

Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建
Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建

然後點選configure按鈕,打開新的視窗,在Specifythe generator for this project下選擇MinGWMakefiles,然後選擇Specifynative compilers,點選Next按鈕,打開新的視窗,在C一欄中填寫D:/Qt/Qt5.4.1/Tools/mingw491_32/bin/gcc.exe,在C++一欄中填寫D:/Qt/Qt5.4.1/Tools/mingw491_32/bin/g++.exe,Fortran不填寫,然後點選Finish按鈕。

開始配置,出現錯誤,在

Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建
Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建

搜尋CMAKE_MAKE_PROGRAM,CMAKE_MAKE_PROGRAM配置為D:/Qt/Qt5.4.1/Tools/mingw491_32/bin/mingw32-make.exe沒有就不管它

繼續勾選WITH_QT與WITH_OPENGL,再次configure,又出現錯誤,搜尋并添加(意思就是說你找得到的就修改沒有的就加上去)

QT_QMAKE_EXECUTABLE,它的值填寫為:D:/Qt/Qt5.4.1/5.4/mingw491_32/bin/qmake.exe

QT_MKSPECS_DIR,它的值填寫為:D:/Qt/Qt5.4.1/5.4/mingw491_32/mkspecs

QT_QTCORE_LIBRARY_DEBUG,它的值填寫為:D:/Qt/Qt5.4.1/5.4/mingw491_32/bin/Qt5Cored.dll

QT_QTCORE_LIBRARY_RELEASE,它的值填寫為D:/Qt/Qt5.4.1/5.4/mingw491_32/bin/Qt5Core.dll

QT_QTCORE_INCLUDE_DIR,它的值填寫為D:/Qt/Qt5.4.1/5.4/mingw491_32/include/QtCore/5.4.1/QtCore

再次configure,會出現Qt5Concurrent_DIR,Qt5Core_DIR,Qt5Gui_DIR,Qt5Test_DIR,Qt5Widgets_DIR,Qt5OpenGL_DIR not found,還是搜尋這些變量

它們的Value分别填寫為:

D:/Qt/Qt5.4.1/5.4/mingw491_32/lib/cmake/Qt5Concurrent

D:/Qt/Qt5.4.1/5.4/mingw491_32/lib/cmake/Qt5Core

D:/Qt/Qt5.4.1/5.4/mingw491_32/lib/cmake/Qt5Gui

D:/Qt/Qt5.4.1/5.4/mingw491_32/lib/cmake/Qt5Test

D:/Qt/Qt5.4.1/5.4/mingw491_32/lib/cmake/Qt5Widgets

D:/Qt/Qt5.4.1/5.4/mingw491_32/lib/cmake/Qt5OpenGL

點選Generate生成Make檔案,然後執行下一步。

同時按下Ctrl+R,在彈出的對話框中輸入cmd,打開系統指令行終端,進入到D:/opencv/MinGW的目錄下(cd D:/opencv/MinGW)執行mingw32-make指令,這會需要很長時間,還有别運作其他程式屏保也不可以(偶發性錯誤),放着别動去喝茶,最後提示build target opencv transcode之後,接着輸入mingw32-make install,100%結束後關閉指令行即可。

下面開始配置opencv的Qt開發環境。

其實我們需要的隻是編譯後MINGW目錄下的bin和lib檔案夾,在D盤先建一個目錄OpenCV4Qt,将D:/opencv/MinGW目錄下的bin目錄和lib目錄和D:\opencv\build\include目錄共3個目錄複制到該目錄下

今後我們在用Qt建立opencv工程的時候,都要在工程名稱.Pro上添加以下目錄和庫。

IINCLUDEPATH+=  D:\OpenCV4Qt\include\      

                D:\OpenCV4Qt\include\opencv\

                D:\OpenCV4Qt\include\opencv2

LIBS+=D:\OpenCV4Qt\lib\libopencv_calib3d2410.dll.a\

    D:\OpenCV4Qt\lib\libopencv_contrib2410.dll.a\

    D:\OpenCV4Qt\lib\libopencv_core2410.dll.a\

    D:\OpenCV4Qt\lib\libopencv_features2d2410.dll.a\

    D:\OpenCV4Qt\lib\libopencv_flann2410.dll.a\

    D:\OpenCV4Qt\lib\libopencv_gpu2410.dll.a\

    D:\OpenCV4Qt\lib\libopencv_highgui2410.dll.a\

    D:\OpenCV4Qt\lib\libopencv_imgproc2410.dll.a\

    D:\OpenCV4Qt\lib\libopencv_legacy2410.dll.a\

    D:\OpenCV4Qt\lib\libopencv_ml2410.dll.a\

    D:\OpenCV4Qt\lib\libopencv_objdetect2410.dll.a\

D:\OpenCV4Qt\lib\libopencv_video2410.dll.a

到此就結束了,庫的添加自己可以按照庫目錄自己選擇那些必須的,以後用到别的再選擇添加。

Qt控制台測試程式:

#include<QCoreApplication>
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
 
int main(intargc,char*argv[])
{
    //QCoreApplicationa(argc,argv);
    //returna.exec();
    cout<<"opencv"<<endl;
    cv::Mat src=cv::imread("F:/image/3.jpg");  //絕對路徑
    cv::namedWindow("test");
    cv::imshow("test",src);
    cv::waitKey(0);
    cv::destroyWindow("test");
    return 0;
}
           
Ctrl+R效果:      
Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建
Win7X64下Qt541+MinGW491+OpenCV2410+Cmake321編譯環境搭建