天天看點

VS2010+QT5.1+opencv2.4.5圖像界面第一個程式

         QT最近新出了5.1.0版本,最近要用QT編寫界面,是以重新下載下傳了新的QT,替換了以前的Qt4.8.4.

         VS2010+opencv2.4.5+Qt4.8.4的配置過程,請參考博文 OpenCV2.4.5 + QT4.8.4 + VS2010 環境搭建 位址 http://blog.csdn.net/skeeee/article/details/8802375

         在這就隻介紹QT5.1安裝。

一、QT版本的下載下傳

        QT 安裝包下載下傳 Qt 5.1.0 for Windows 32-bit (VS 2010, 505 MB) (Info)

        QT VS2010插件 Visual Studio Add-in 1.2.2 for Qt5  (does not work with the Express edition)

二、QT5.1 安裝

       2.1 軟體安裝

               安裝 QT VS Addin插件,以及QT安裝包,要注意的是安裝路徑不能有中文,是以我QT安裝包直接選擇d:/QT,省下一直Next就行。

      2.2 環境變量的配置

              我的電腦-》右鍵屬性-》進階-》環境變量 ,在PATH中加上 ;D:\Qt\Qt5.1.0\5.1.0\msvc2010\bin

              如圖:

VS2010+QT5.1+opencv2.4.5圖像界面第一個程式

            然後在VS2010中也要設定環境變量,QT5-》屬性-》Add,版本名稱是QT5.1.0,路徑:D:\Qt\Qt5.1.0\5.1.0\msvc2010

VS2010+QT5.1+opencv2.4.5圖像界面第一個程式
VS2010+QT5.1+opencv2.4.5圖像界面第一個程式

 三、第一個圖形界面程式

       3.1建立QT5.1工程

             配置完成後,用VS2010建立一個工程,選擇QT5 Projects-》QT application,工程名為Qt5test

VS2010+QT5.1+opencv2.4.5圖像界面第一個程式

        一鍵Ok,直接Finish,工程就建立成功了。

VS2010+QT5.1+opencv2.4.5圖像界面第一個程式

  3.2 使用QT設計師設計界面以及連結資訊/槽

        輕按兩下qt5test.ui,會彈出來Qt 設計師界面,拖兩個按鈕添加到界面中,然後輕按兩下修改按鈕的名稱,以及改變按鈕的尺寸。

        然後連結資訊/槽,選中 編輯資訊/槽 按鈕(如下圖),左鍵Open Image按鈕,拖拽,就可以拖出一條連結信号/槽的線,松開滑鼠,就彈出編輯出口(如下圖)。點選編輯按鈕,在槽中添加按鈕按下的響應函數,OpenImageClicked()以及ProcessClicked()函數,确定後,點選click,選擇OpenImageClicked()作為按鈕Open Image的響應函數,同樣設定Process的響應函數為ProcessClicked();設計好的界面記得儲存,VS2010運作是不會對Qt Project自動儲存,隻會加載之前儲存的界面

VS2010+QT5.1+opencv2.4.5圖像界面第一個程式
VS2010+QT5.1+opencv2.4.5圖像界面第一個程式
VS2010+QT5.1+opencv2.4.5圖像界面第一個程式
VS2010+QT5.1+opencv2.4.5圖像界面第一個程式
VS2010+QT5.1+opencv2.4.5圖像界面第一個程式

3.3  編寫響應函數程式

        在QT5test類中聲明和定義兩個按鈕響應函數OpenImageClicked()和ProcessClicked()

       輕按兩下qt5test.h,在類中添加兩個響應函數的聲明,添加頭檔案,以及私有變量cv::Mat image;

#ifndef QT5TEST_H
#define QT5TEST_H

#include <QtWidgets/QMainWindow>
#include <Qlabel>    
#include "ui_qt5test.h"

#include <opencv/cv.h>
#include <opencv/highgui.h>

class Qt5test : public QMainWindow
{
	Q_OBJECT

public:
	Qt5test(QWidget *parent = 0);
	~Qt5test();

private:
	Ui::Qt5testClass ui;
	cv::Mat image;   //定義私有變量 image
	cv::Mat result;//定義私有變量 result

private slots:    //聲明信号函數
	void OpenImageClicked();
	void ProcessClicked();
};

#endif // QT5TEST_H
           

       輕按兩下qt5test.cpp,定義響應函數

#include "qt5test.h"

Qt5test::Qt5test(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
}

Qt5test::~Qt5test()
{

}

void Qt5test::OpenImageClicked()
{
	image = cv::imread("img.jpg");//讀取圖像
	cv::cvtColor(image, image, CV_RGB2RGBA);//圖像在QT顯示前,必須轉化成QImage格式,将RGBA格式轉化成RGB
	QImage img = QImage((const unsigned char*)(image.data), 
		image.cols, image.rows, QImage::Format_RGB32); 
	QLabel *label = new QLabel(this);
	label->move(130,50);
	label->setPixmap(QPixmap::fromImage(img));  
	label->resize(label->pixmap()->size());
	label->show();
}

void Qt5test::ProcessClicked()
{
	cv::flip(image,result,1);//對圖像進行翻轉
	QImage img = QImage((const unsigned char*)(result.data), 
		result.cols, result.rows, QImage::Format_RGB32);
	QLabel *label = new QLabel(this);
	label->move(380,50);
	label->setPixmap(QPixmap::fromImage(img));  
	label->resize(label->pixmap()->size());
	label->show();
}
           

3.4 運作程式結果如下

VS2010+QT5.1+opencv2.4.5圖像界面第一個程式

四、參考資料

       Qt開發者社群  http://qt.csdn.net/index.aspx

       Qt Project 官網 http://qt-project.org/

      程式下載下傳        VS2010+QT5.1.0+opencv 測試程式