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

QT OpenCv 图像显示

2013-09-18 15:30 369 查看
myWidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include <QLabel>
#include <cv.h>
#include <highgui.h>

using namespace cv;

class myWidget : public QWidget
{
Q_OBJECT
public:
myWidget(Mat& img,QWidget *parent = 0);
~myWidget();

private:
Mat iplImg;
QImage qImg;
QLabel* resultImageLabel;
};

#endif


myWidget.cpp

#include "myWidget.h"
#include <QPainter>
#include <QPoint>

using namespace cv;

myWidget::myWidget(Mat& img, QWidget *parent /* = 0 */) : QWidget(parent)
{
Mat rgb;
setFixedSize(img.cols, img.rows);
resultImageLabel = new QLabel(tr("result image"));

if(img.channels() == 3)    // RGB image
{
cvtColor(img, rgb, CV_BGR2RGB);
qImg = QImage((const uchar*)(rgb.data),  //(const unsigned char*)
rgb.cols,rgb.rows,
rgb.cols*rgb.channels(),   //这里应该加上此句,否则对于有些图像不能正确显示。
QImage::Format_RGB888);
resultImageLabel->setPixmap(QPixmap::fromImage(qImg.scaled(width(), height()), Qt::AutoColor));
}
else                     // gray image
{
qImg = QImage((const uchar*)(img.data),
img.cols,img.rows,
img.cols*img.channels(),    //这里应该加上此句,否则对于有些图像不能正确显示。
QImage::Format_Indexed8);
resultImageLabel->setPixmap(QPixmap::fromImage(qImg.scaled(width(), height()), Qt::MonoOnly));
}

resultImageLabel->show();

}
myWidget::~myWidget()
{
}


main.cpp

#include "qt_tld.h"
#include <QtGui/QApplication>
#include "MainWindow.h"
#include "myWidget.h"
#include <cv.h>
#include <highgui.h>

int main(int argc, char *argv[])
{

QApplication app(argc,argv);

Mat img = imread("2.png", 1);
if (!img.empty())
{
myWidget *mw = new myWidget(img);
//mw->show();
}
int re = app.exec();
return re;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: