Qt界面显示图片,Qt与opencv的联合运用

在做了信号槽与opencv的结合使用后,又选用了一种简单的方式来显示彩色,灰度,二值图片。

程序代码运行结果如下:


结果显示左图是彩色图,中间是灰度图,右边是二值图。

代码展示如下:

//qt_gray_binary_1.h

#ifndef QT_GRAY_BINARY_1_H
#define QT_GRAY_BINARY_1_H

#include <QtWidgets/QMainWindow>
#include "ui_qt_gray_binary_1.h"
#include<QtGui/QPainter>
#include <QtCore/QPoint>
#include <cv.h>


#include "qtcvimage.h"


class qt_gray_binary_1 : public QMainWindow
{
Q_OBJECT


public:
qt_gray_binary_1(QWidget *parent = 0);
     ~qt_gray_binary_1();
    IplImage* image;
IplImage* imageGray;
IplImage* imageBin;

private:
Ui::qt_gray_binary_1Class ui;
QtCVImage* a;
QtCVImage* b;
QtCVImage* c;
};


#endif // QT_GRAY_BINARY_1_H


//qt_gray_binary_1.cpp

#include "qt_gray_binary_1.h"
#include <QMessageBox>
#include <opencv/cv.h>
#include<opencv/highgui.h>
#include <opencv/cvaux.h>
qt_gray_binary_1::qt_gray_binary_1(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
/*this->read_in();
this->gray_img();
this->binary_img();
this->display();
   */
image=cvLoadImage("C:\\Users\\801\\Desktop\\3.jpg");//加载彩色图
a=new QtCVImage(image,this);
imageGray=cvCreateImage(cvGetSize(image),image->depth,1);//给imageGray分配存储空间
cvCvtColor(image,imageGray,CV_RGB2GRAY);//彩色图转换为灰度图
b=new QtCVImage(imageGray,this);
imageBin=cvCreateImage(cvGetSize(imageGray),imageGray->depth,1);//灰度图转换为二值图
cvThreshold(imageGray,imageBin, 0, 200, CV_THRESH_OTSU);// 转为二值图
c=new QtCVImage(imageBin,this);


ui.verticalLayout->addWidget(a);
ui.verticalLayout_2->addWidget(b);
ui.verticalLayout_3->addWidget(c);
}


qt_gray_binary_1::~qt_gray_binary_1()
{
}

这个里面比单纯的opencv图像的转换多出来的创新点就在于,保证了图片在一个界面能够同时显示,可视化比较好。

a=new QtCVImage(image,this);

b=new QtCVImage(imageGray,this);

c=new QtCVImage(imageBin,this);

ui.verticalLayout->addWidget(a);

ui.verticalLayout_2->addWidget(b);
ui.verticalLayout_3->addWidget(c);

这部分代码主要实现了以上的窗口显示。对应Qt上的界面,主要进行了如下的操作:

首先是在窗口中拖入三个Widget Containers,然后在Widget Containers上面拖入三个Vertical Layout(一一对应),然后点击窗口的空白处进行布局,效果如图所示:


这就是一个基本的界面布局。

这就为图片的显示打好基础,如果布局这部分有不清楚的,可以看一下《C++ GUI Qt4 编程(第二版)》,这本书当中有介绍布局管理,可以参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫猫与橙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值