现在的位置: 首页 > 综合 > 正文

VS2010+QT5.1+opencv2.4.5图像界面第一个程序

2013年10月08日 ⁄ 综合 ⁄ 共 2600字 ⁄ 字号 评论关闭

         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-》属性-》Add,版本名称是QT5.1.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;

       

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

四、参考资料

       Qt开发者社区  http://qt.csdn.net/index.aspx

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

      程序下载        VS2010+QT5.1.0+opencv
测试程序

抱歉!评论已关闭.