QT OpenCv 图像显示

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



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值