QT自定义opengl的Widget绘制Mat

QT自定义opengl的Widget绘制Mat

  • 宽高 512


  • 修改名字mat
  • 自定义类型 提升为


 
  • 提升为MatView类


 
  • 类型已经改变为MatView


 
  • 新建MatView类cpp文件


 
  • 添加头文件
  • 修改构造函数(函数实现,调用父类构造函数)
  • 添加宏定义



 

  • 重载绘制函数
  • 只显示图片使用paintEvent()
  • 若绘制视频相关,需要使用repaint、update相关函数


 
  • 只要窗口发生变化,都会调用该函数(如:窗口移动了,所以相关业务逻辑,不能放入,只做绘图的业务)


 
  • 工程文件配置
  • opencv配置
  • 输出目录

  • 调试目录

  • 头文件目录

  • 链接器目录

  • 链接器文件

  • 引入头文件
 
定义QImage类型

  • 文件源数据(opencv读入的文件)
  • 宽高
  • 数据格式
 读入图片,并定义QImage

qt内定义图片类型格式

  • 每个像素一个字节 8位,也就是RGB888;同理RGB555,也就是每个像素5位



 

绘制显示图片

  • 第一步 清理
  • 第二步 绘制图片


 
显示的效果原因:

  • opencv读入图片默认为BGR顺序,转换为RGB模式


 

使用OpenGL绘制图片的优点:

  • 后期处理非常方便,如图象的选择区ROI,添加文字、按钮等。
 

 

博客 2017年8月23日13:36:09

时间: 2024-10-07 15:15:49

QT自定义opengl的Widget绘制Mat的相关文章

基于Qt的OpenGL可编程管线学习(1)- 绘制一个三角形

0.写在前面的话 这里只是学习的时候做的笔记记录方便日后的查看,如果有大神看到觉得有问题的地方希望能给予指出,方便日后的学习,谢谢! 我是用的Qt版本为Qt5.6,开发环境为Qt Creator 1.QOpenGLWidget 在Qt开发环境下,使用OpenGL的可编程管线绘制一个三角形 效果如下图所示: 这里使用QOpenGLWidget进行绘制的,在QOpenGLWidget中需要重写 void initializeGL(void); void resizeGL(int w, int h);

paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制

源地址:http://blog.csdn.net/attilax/article/details/12343625 paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制 效果图: 作者Attilax ,  EMAIL:[email protected] 来源:attilax的专栏地址:http://blog.csdn.net/attilax 第一步:去掉系统默认标题栏 1 第2步:添加自定义标题栏以及最小化,最大化.关闭按钮...还有左边的窗体小图标.. 2 第3步:添加标

Qt自定义窗口部件

QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin) 改进法 1.改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和HexspinBox.cpp文件.把这两个文件拷贝到想要的项目中. HexspinBox.h Cpp代码   #ifndef HEXSPINBOX_H #define HEXSPINBOX_H #include <QSpinBox> class QRegExpValidator; class HexSpinBox

QT 下opengl (认识)

虽然Qt不以效率著称,但是事实上有足够的优化,最最典型的就是默认的图形双缓冲,按照Windows下的编程惯例是需要手动开启,并通过额外的接口调用才能使用的,这一点在以前简单图形编程学习时比较过Qt,Win32 GDI时感受特别深刻,在没有额外处理的时候,Win32动画程序那个闪阿,而Qt程序非常稳定.事实上,我想,Qt的其他问题比效率严重多了,比如个人感觉Qt程序在Windows下刷新的感知明显没有Windows原生程序快,这点倒是值得改进.OpenGL只处理与3D图形的绘制,基本上不提供创建用

QT 开发opengl 错误1

很多人在用QT写OpenGL程序的时候需要使用glu开头的函数,但是却发现怎么也没法使用,例如:gluPerspective函数,用来建立透视投影矩阵的. 其实不仅仅是QT,包括VC编译器,也都会出现上面的问题. 错误: 错误:C3861: 'gluPerspective': identifier not found 解决办法: 在pro文件中加入:LIBS += glut.lib glut32.lib 但是前提是你将这两个lib文件放入了qt的bin目录下,我的电脑安装的对应目录是: C:\Q

Android OpenGL入门示例:绘制三角形和正方形 (附完整源码)

Android上对OpenGl的支持是无缝的,所以才有众多3D效果如此逼真的游戏,在Camera的一些流程中也有用到GLSurfaceView的情况.本文记录OpenGL在Android上的入门级示例,绘制一个三角形和正方形.尽管功能简单,可是我捣腾了好几个晚上,大量网上文章上的代码都有点问题,不是绘制不出来就是挂了. 第一个文件:MainActivity.java package com.example.learnopengl1; import android.opengl.GLSurface

Qt自定义菜单项

经常会看到一些菜单的部分项是由几个按钮组成的,如酷狗.QQ.360都有类似菜单,对于常规的菜单项,图标 + 文字 实现一个事件,很容易完成,那么怎么自定义菜单项呢? Qt提供了支持,就是利用QWidget + QWidgetAction来完成.QWidgetAction继承自QAction,无法通过继承来实现一个界面,但它提供了setDefaultWidget来绑定一个界面,使用起来就更加方便了. 下面实现一个没有Action的菜单,并通过按钮显示出来: void UserMenu::Creat

Qt Quick + OpenGL + Bullet初次測试

Qt Quick + OpenGL + Bullet初次測试 眼下Qt的Quick模块已经表现得很出色,并且可以预留接口来渲染OpenGL场景.一般来说,已经可以满足大部分编程须要了.这次呢.尝试使用结合一些技术,来做一些有趣儿的事情--将Bullet整合进来,并且进行測试. 蒋彩阳原创文章.首发地址:http://blog.csdn.net/gamesdev/article/details/44284317.欢迎同行前来探讨. 有关Bullet的选择,事实上也是有一番讲究的.眼下Bullet的

Qt Quick + OpenGL + Bullet初次测试

Qt Quick + OpenGL + Bullet初次测试 目前Qt的Quick模块已经表现得非常出色,而且可以预留接口来渲染OpenGL场景.一般来说,已经能够满足大部分编程需要了.这次呢,尝试使用结合一些技术,来做一些有趣儿的事情--将Bullet整合进来,并且进行测试. 蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/44284317.欢迎同行前来探讨. 有关Bullet的选择,其实也是有一番讲究的.目前Bullet的