VS2010+OpenCV2.4.4+Qt4.8.4 图形界面第一个演示程序
2013-04-03 20:32
573 查看
VS2010+OpenCV2.4.4+Qt4.8.4 图形界面第一个演示程序
1.工程建立NEW->PROJECT
FILE->NEW->PROJECT,选择Qt Project --> Qt Application,name is qtestqtopencv 点击finish完成工程的创建.
2.UI界面设计
工程创建好之后,一个后缀名为.ui的文件就是关于界面设计的。我们首先就要对它操作。
双击.ui,进入designer(设计师),首先创建两个按钮,拖拽两个Push Buttons到Form中去,修改其名称。
一个名字为OpenImage,一个为ProcessImage
3. qtestqtopencv .h 添加OpenCV的头文件与变量,和相应的槽函数。如下:
/*
test qt and opencv
*/
#ifndef TESTQTOPENCV_H
#define TESTQTOPENCV_H
#include <QtGui/QDialog>
#include <QFileDialog>
#include <QLabel>
#include <QPushButton>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include "ui_testqtopencv.h"
class testqtopencv : public QDialog
{
Q_OBJECT
public:
testqtopencv(QWidget *parent = 0, Qt::WFlags flags = 0);
~testqtopencv();
private:
Ui::testqtopencvClass ui;
cv::Mat image; // cv image;
private slots:
void on_OpenImage_clicked();
void on_ProcessImage_clicked();
};
#endif // TESTQTOPENCV_H
4. testqtopencv.cpp实现文件如下:
PS:与MFC中显示图片需要CvvImage类似,要想在Qt的Form中显示图片,图片的格式也必须为QImage,需要将cv::Mat的RGB通道顺序变换为RGBA,QImage的格式为Format_RGB32,调用cvtColor实现.(后经实验,对于webcam视频需要使用参数:BGR2RGB,Format_RGB888这组参数,格式的问题真是混乱!!!)(这段话是yang_xian521说的)
/////////////////////////////////////////////////////////////////////////////////////////
#include "testqtopencv.h"
testqtopencv::testqtopencv(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
ui.setupUi(this);
connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(on_OpenImage_clicked()));
connect(ui.pushButton_2,SIGNAL(clicked()),this,SLOT(on_ProcessImage_clicked()));
}
testqtopencv::~testqtopencv()
{
}
void testqtopencv:: on_OpenImage_clicked()
{
ui.lineEdit->setText(tr("OpenImage"));
QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"),
".", tr("Image Files (*.png *.jpg *.jpeg *.bmp)"));
image = cv::imread(fileName.toAscii().data());
// 注释的部分是按键响应,并不显示在Form中
// cv::namedWindow("Original Image");
// cv::imshow("Original Image", image);
// image=cv::imread("D:/demo.jpg");
// cv::imshow("test",image);
cv::cvtColor(image, image, CV_RGB2RGBA);
QImage img = QImage((const unsigned char*)(image.data), image.cols, image.rows, QImage::Format_RGB32);
QLabel *label = new QLabel(this);
label->move(200, 50);//图像在窗口中所处的位置;
label->setPixmap(QPixmap::fromImage(img));
label->resize(label->pixmap()->size());
label->show();
}
void testqtopencv:: on_ProcessImage_clicked()
{
ui.lineEdit->setText(tr("ProcessImage"));
cv::flip(image, image, 1);
// cv::namedWindow("Output Image");
// cv::imshow("Output Image", image);
//cv::cvtColor(image, image, CV_RGB2RGBA);
QImage img = QImage((const unsigned char*)(image.data), image.cols, image.rows, QImage::Format_RGB32);
QLabel *label = new QLabel(this);
label->move(200, 50);
label->setPixmap(QPixmap::fromImage(img));
label->resize(label->pixmap()->size());
label->show();
//ui.lineEdit
}
5.RUN
1.工程建立NEW->PROJECT
FILE->NEW->PROJECT,选择Qt Project --> Qt Application,name is qtestqtopencv 点击finish完成工程的创建.
2.UI界面设计
工程创建好之后,一个后缀名为.ui的文件就是关于界面设计的。我们首先就要对它操作。
双击.ui,进入designer(设计师),首先创建两个按钮,拖拽两个Push Buttons到Form中去,修改其名称。
一个名字为OpenImage,一个为ProcessImage
3. qtestqtopencv .h 添加OpenCV的头文件与变量,和相应的槽函数。如下:
/*
test qt and opencv
*/
#ifndef TESTQTOPENCV_H
#define TESTQTOPENCV_H
#include <QtGui/QDialog>
#include <QFileDialog>
#include <QLabel>
#include <QPushButton>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include "ui_testqtopencv.h"
class testqtopencv : public QDialog
{
Q_OBJECT
public:
testqtopencv(QWidget *parent = 0, Qt::WFlags flags = 0);
~testqtopencv();
private:
Ui::testqtopencvClass ui;
cv::Mat image; // cv image;
private slots:
void on_OpenImage_clicked();
void on_ProcessImage_clicked();
};
#endif // TESTQTOPENCV_H
4. testqtopencv.cpp实现文件如下:
PS:与MFC中显示图片需要CvvImage类似,要想在Qt的Form中显示图片,图片的格式也必须为QImage,需要将cv::Mat的RGB通道顺序变换为RGBA,QImage的格式为Format_RGB32,调用cvtColor实现.(后经实验,对于webcam视频需要使用参数:BGR2RGB,Format_RGB888这组参数,格式的问题真是混乱!!!)(这段话是yang_xian521说的)
/////////////////////////////////////////////////////////////////////////////////////////
#include "testqtopencv.h"
testqtopencv::testqtopencv(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
ui.setupUi(this);
connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(on_OpenImage_clicked()));
connect(ui.pushButton_2,SIGNAL(clicked()),this,SLOT(on_ProcessImage_clicked()));
}
testqtopencv::~testqtopencv()
{
}
void testqtopencv:: on_OpenImage_clicked()
{
ui.lineEdit->setText(tr("OpenImage"));
QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"),
".", tr("Image Files (*.png *.jpg *.jpeg *.bmp)"));
image = cv::imread(fileName.toAscii().data());
// 注释的部分是按键响应,并不显示在Form中
// cv::namedWindow("Original Image");
// cv::imshow("Original Image", image);
// image=cv::imread("D:/demo.jpg");
// cv::imshow("test",image);
cv::cvtColor(image, image, CV_RGB2RGBA);
QImage img = QImage((const unsigned char*)(image.data), image.cols, image.rows, QImage::Format_RGB32);
QLabel *label = new QLabel(this);
label->move(200, 50);//图像在窗口中所处的位置;
label->setPixmap(QPixmap::fromImage(img));
label->resize(label->pixmap()->size());
label->show();
}
void testqtopencv:: on_ProcessImage_clicked()
{
ui.lineEdit->setText(tr("ProcessImage"));
cv::flip(image, image, 1);
// cv::namedWindow("Output Image");
// cv::imshow("Output Image", image);
//cv::cvtColor(image, image, CV_RGB2RGBA);
QImage img = QImage((const unsigned char*)(image.data), image.cols, image.rows, QImage::Format_RGB32);
QLabel *label = new QLabel(this);
label->move(200, 50);
label->setPixmap(QPixmap::fromImage(img));
label->resize(label->pixmap()->size());
label->show();
//ui.lineEdit
}
5.RUN
相关文章推荐
- VS2010+OpenCV2.4.3+Qt4.8.4 图形界面第一个演示程序
- VS2010+OpenCV2.4.3+Qt4.8.4 组合配置
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- win7运行第一个opencv程序,基于opencv3.2,官方vc14编译版本,QT5.8 VS2015平台
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- Qt系列-2、VS2010+QT5+opencv2.4用户界面第一个程序
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- qt5.1+ vs2013+opencv2.4.8制作第一个图形界面
- VS2010+QT5.1+opencv2.4.5图像界面第一个程序(改了一些,现在QT5.4,OPENCV2.4.10)
- 哇卡卡卡~今天Qt第一个原创程序调试成功
- QT第一个程序 hello,world
- Qt5学习笔记2:运行第一个Qt程序HelloQt5
- 我的第一个openCV3程序。