VS2015+QT5.7+opencv3.10影象處理
VS2010+QT5.7+opencv2.4.5影象介面第一個程式
QT最近新出了5.1.0版本,最近要用QT編寫介面,所以重新下載了新的QT,替換了以前的Qt4.8.4.
VS2015+opencv2.4.5+Qt4.8.4的配置過程,請參考博文 OpenCV2.4.5
+ QT4.8.4 + VS2015 環境搭建
在這就只介紹QT5.1安裝。
一、QT版本的下載
QT 安裝包下載 Qt
5.1.0 for Windows 32-bit (VS 2010, 505 MB) (Info)
QT VS2015外掛 Visual
Studio Add-in 1.2.2 for Qt5
二、QT5.1 安裝
2.1 軟體安裝
安裝 QT VS Addin外掛,以及QT安裝包,要注意的是安裝路徑不能有中文,所以我QT安裝包直接選擇d:/QT,省下一直Next就行。
2.2 環境變數的配置
我的電腦-》右鍵屬性-》高階-》環境變數 ,在PATH中加上 ;D:\Qt\Qt5.7.0\5.7.0\msvc2010\bin
如圖:
然後在VS2017中也要設定環境變數,QT7-》屬性-》Add,版本名稱是QT5.7.0,路徑:D:\Qt\Qt5.1.0\5.1.0\msvc2010
三、第一個圖形介面程式
3.1新建QT5.1工程
配置完成後,用VS2010新建一個工程,選擇QT5 Projects-》QT application,工程名為Qt5test
一鍵Ok,直接Finish,工程就建立成功了。
3.2 使用QT設計師設計介面以及連結資訊/槽
雙擊qt5test.ui,會彈出來Qt 設計師介面,拖兩個按鈕新增到介面中,然後雙擊修改按鈕的名稱,以及改變按鈕的尺寸。
然後連結資訊/槽,選中 編輯資訊/槽 按鈕(如下圖),左鍵Open Image按鈕,拖拽,就可以拖出一條連結訊號/槽的線,鬆開滑鼠,就彈出編輯出口(如下圖)。點選編輯按鈕,在槽中新增按鈕按下的響應函式,OpenImageClicked()以及ProcessClicked()函式,確定後,點選click,選擇OpenImageClicked()作為按鈕Open Image的響應函式,同樣設定Process的響應函式為ProcessClicked();設計好的介面記得儲存,VS2010執行是不會對Qt
Project自動儲存,只會載入之前儲存的介面
3.3 編寫響應函式程式
在QT5test類中宣告和定義兩個按鈕響應函式OpenImageClicked()和ProcessClicked()
雙擊qt5test.h,在類中新增兩個響應函式的宣告,新增標頭檔案,以及私有變數cv::Mat image;
[cpp] view plain copy print ?
- #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
#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,定義響應函式
[cpp] view plain copy print ?
- #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();
- }
#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();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
3.4 執行程式結果如下
四、參考資料
Qt開發者社群 http://qt.csdn.net/index.aspx
Qt Project 官網 http://qt-project.org/
程式下載 VS2010+QT5.1.0+opencv
測試程式
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-778f64ae39.css" rel="stylesheet">
</div>