OpenCV QT creator

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

#include <QWidget>


using namespace std;
using namespace cv;

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

  protected:
    void paintEvent(QPaintEvent *e);

  private:
    IplImage* iplImg;
    QImage *qImg;
};

#endif // MYWIDGET_H



 

#include "myWidget.h"
#include <QtGui\QPainter>
#include <QtCore\QPoint>

myWidget::myWidget(const IplImage *img, QWidget *parent /* = 0 */) : QWidget(parent)
{
    // 创建QImage图像
    qImg = new QImage(QSize(img->width, img->height), QImage::Format_RGB888);

    // 创建QImage图像
    iplImg = cvCreateImageHeader(cvSize(img->width, img->height), 8, 3);

    // iplImg 和 Qimage 共享图像数据
    iplImg->imageData = (char*)qImg->bits();
    if (img->origin == IPL_ORIGIN_TL)
    {
        cvCopy(img, iplImg, 0);
    }
    else
    {
        cvFlip(img, iplImg, 0);
    }

    // 将颜色排列以QImage中的RGB顺序为标准
    cvCvtColor(iplImg, iplImg, CV_BGR2RGB);

    // 按图像实际大小调整窗体
    this->resize(img->width, img->height);
}

myWidget::~myWidget()
{
    cvReleaseImage(&iplImg);
    delete qImg;
}

void myWidget::paintEvent(QPaintEvent *e)
{
    QPainter painter(this);
    painter.drawImage(QPoint(0, 0), *qImg);
}


 

#include "widget.h"
#include <QApplication>
#include "myWidget.h"


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

    IplImage *img = cvLoadImage("lena.jpg",1);

    if (img)
    {
     myWidget *mw = new myWidget(img);
     mw->show();
    }
    int re = app.exec();
    cvReleaseImage(&img);
    return re;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值