1、选择:文件->新建->项目->搜索“QT”->Qt GUI Application,输入工程名,下一步…进行新建。
选择依赖的模块:最基础的QtCore、QtGui、QtWidgets还有一些音/视频、网络、数据库、XML、OpenGl相关的模块,需要使用的直接勾选即可。
选择QtGuiApplication2.ui -> 打开方式 -> Qt Designer -> 确定
拉一个OPenGL控件到窗体上
改控件名字为mat->右键选择提升为...
提升的类名称:MatView -> 点击添加 ->提升 -> ctrl + F 保存界面 ,如下图
Header Files右键 -> 类导向 -> 添加类 -> 类命:MatView -> 完成 -> 确认,如下图
MatView.h代码
#pragma once
//导入相应的库
#include <QOpenGLWidget>
//继承QOpenGLWidget
class MatView:public QOpenGLWidget
{
Q_OBJECT
public:
//构造函数
MatView(QWidget *p);
~MatView();
//重载一个函数
void paintEvent(QPaintEvent *e);
};
MatView.cpp代码
#include "QtGuiApplication2.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtGuiApplication2 w;
w.show();
return a.exec();
}
main.cpp代码
#include "MatView.h"
#include<opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/imgcodecs.hpp>
#include <QImage>
#include <QPainter>
using namespace cv;
//重载一个函数,只要窗口发生变化他都会调用,这个函数不能处理业务逻辑,只做处理图像
void MatView::paintEvent(QPaintEvent *e) {
Mat src = imread("E:\\VS2015Opencv\\vs2015\\project\\picture\\12.jpg");
QImage img(src.data, src.cols, src.rows, QImage::Format_RGB888);
QPainter painter;
painter.begin(this);
painter.drawImage(QPoint(0, 0), img);
}
//构造函数,调用父类的,因为父类还有处理在里面,所以要调用它
MatView::MatView(QWidget *p) :QOpenGLWidget(p)
{
}
MatView::~MatView(){
}