2014年5月17日 星期六

【OpenCV】Install OpenCV2.4.X with QT 5.2 on Windows (在QT 5.2上安裝OpenCV2.4.X)


  • 在QT上建立一個專案,此範例單純建立C++專案。如果要結合QT UI的話,必須建立QT應用程式的專案。



  • 接下來指定專案所在位置,可自行設定。



  • 設定編譯後的資料夾放在哪裡,也可自行設定名稱與位置。如果只會使用Debug或Release其中一種也可打勾挑選各自需求。



  • 如果有需要結合版本控制也可以透過這裡直接設定。



  • 下載OpenCV,可依照版本自行下載,最新版本下載連結http://opencv.org/下載後解壓縮至指定位置,會產生一個叫opencv的資料夾。資料夾裡面包含build與source兩個資料夾,source是原始碼,而build是已經編譯完的靜態庫、動態庫及範例程式。



  • 開始在QT進行設定,QT上的設定較Visual Studio來的簡單一些,只需要在pro檔做設定。
  • 【Include設定】
INCLUDEPATH += C:\OpenCV_2_4_9\build\include
               C:\OpenCV_2_4_9\build\include\opencv
               C:\OpenCV_2_4_9\build\include\opencv2
  • 【Lib設定】注意Debud與Release需要的lib檔是不同的
CONFIG(debug,debug|release)
{
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_core249d.lib
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_highgui249d.lib
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_imgproc249d.lib
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_objdetect249d.lib
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_contrib249d.lib
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_ml249d.lib
}
CONFIG(release,debug|release)
{
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_core249.lib
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_highgui249.lib
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_imgproc249.lib
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_objdetect249.lib
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_contrib249.lib
    LIBS += C:\OpenCV_2_4_9\build\x86\vc10\lib\opencv_ml249.lib
}

  • pro檔全部設定完成必須執行qMake才算編譯完成



  • 最後一步就是動態涵式庫必須要加入剛剛設定的編譯資料夾中或者在環境設定中加入連結。
  1. 第一個方式:C:\OpenCV_2_4_9\build\x86\vc10\bin資料夾底下的dll檔複製至剛剛設定的編譯資料夾,如D:\build-testOpenCV-Desktop_Qt_5_2_0_MSVC2010_32bit-Debug。
  2. 第二個方式:電腦->內容->進階系統設定->環境變數中的Path加入C:\OpenCV_2_4_9\build\x86\vc10\bin連結。

  • 當全部設定完成,這時候就可以寫一個簡單開視訊的範例程式,如果可以成功開啟視訊代表已經成功(當然必須要有視訊)。
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;
using namespace std;

int main()
{   
    VideoCapture cap(0);
    if(!cap.isOpened()){
        return -1;
    }
    Mat frame;  
    cout << "Open Camera!" << endl;
    for(;;){
        cap >> frame;
        imshow("Window", frame);
        waitKey(30);
    }
    return 0;
}


  • 成功後輸出的結果

關文章:OpenCV學習日記

0 意見:

張貼留言