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;
}