您的位置:首页 > 编程语言 > Qt开发

Qt系列-2、VS2010+QT5+opencv2.4用户界面第一个程序

2014-04-23 11:38 423 查看
声明:转载自/article/7801802.html

-----------------------------------------------------------------------------------------------------------------------------

1、新建QT5工程

用VS2010新建一个工程,选择QT5 Projects-》QT application,工程名为Qt5test



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



2、【这是重点】 使用QT设计师设计界面以及链接信息/槽

双击qt5test.ui,会弹出来Qt 设计师界面,

拖两个按钮添加到界面中,然后双击修改按钮的名称,以及改变按钮的尺寸。

然后链接信息/槽,选中 编辑信息/槽 按钮(如下图),左键Open Image按钮,拖拽,就可以拖出一条链接信号/槽的线,松开鼠标,就弹出编辑出口(如下图)。点击编辑按钮,在槽中添加按钮按下的响应函数,OpenImageClicked()以及ProcessClicked()函数,确定后,点击click,选择OpenImageClicked()作为按钮Open Image的响应函数,同样设置Process的响应函数为ProcessClicked();设计好的界面记得保存,VS2010运行是不会对Qt
Project自动保存,只会加载之前保存的界面,这个界面设计对应文件"ui_qt5test.h" ,可以看到这个文件的内容,其实是把你的每个拖拽动作转化为了代码。











3 编写响应函数程序

在QT5test类中声明和定义两个按钮响应函数OpenImageClicked()和ProcessClicked()

双击qt5test.h,在类中添加两个响应函数的声明,添加头文件,以及私有变量cv::Mat image;

[cpp] view
plaincopy

#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
plaincopy

#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 运行程序结果如下



四、参考资料

Qt开发者社区 http://qt.csdn.net/index.aspx
Qt Project 官网 http://qt-project.org/
程序下载 VS2010+QT5.1.0+opencv
测试程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: