最近在做图像处理,需要将试验得到的数据转化成RGB,再显示到界面

顺便学习了如下三个知识点:

  1. RGB数据生成BMP位图
  2. YUV 格式与 RGB 格式的相互转换公式总结(C++版)
  3. 将RGB数组在内存中压缩成JPEG文件

直接上Qt加载RGB图片数据代码:

 for(int i = 0;i<height;i++){for(int j = 0;j<width;j++){ImageRGB_m[i*3*width+3*j]  =ImageR_m[i*width+j];ImageRGB_m[i*3*width+3*j+1]=ImageG_m[i*width+j];ImageRGB_m[i*3*width+3*j+2]=ImageB_m[i*width+j];}}QImage *tempImage=new QImage(ImageRGB_m,width,height,QImage::Format_RGB888);ImageLable_m->setImagePix(tempImage);ImageLable_m->show();ui->image_LB_show->setPixmap(QPixmap::fromImage(*image));

中间的ImageLable_m是我自己写的一个专门用于显示图片包含QLabel的一个类.这个是在5.5.1版本中可以先试采土代码。

网上发现很多人说RGB的彩图显示不了,最开始我的也是现实不了,后来发现是

QImage(ImageRGB_m,width,height,QImage::Format_RGB888);

这个是个重载函数,如果要限定每一行的数据大小,切记不要限定为width,这样也是导致显示不了的主要原因,这时候看tempImage的调试信息显示位invalid,将限定数据大小的去掉就可以正常显示彩图了。也就是不要写成QImage(ImageRGB_m,width,height,width ,QImage::Format_RGB888);,如果要防止图片扭曲可以写成下面这样就可以了
QImage *tempImage=new QImage(ImageRGB_m,width,height,3*width,QImage::Format_RGB888);

防扭曲操作:

同时限定每一行的数据大小可以保证图片显示不扭曲,这里之前每次生成的图片都是扭曲的,没行像素点都对不上,其实就是没有限定每一行数据的大小,当不限定每一行数据的大小的时候磨人的貌似是8的倍数的就刚好可以显示,否则就会发生错行,也就是扭曲的了。Qt里面有很多需要注意的细节的了,希望对遇到同样问题的人有帮助。

Qt加载RGB内存数据,并显示彩色图相关推荐

  1. c语言文件 加载内存吗,把文件中的数据加载到内存进行查找C语言实现.docx

    把文件中的数据加载到内存进行查找C语言实现 #define _CRT_SECURE_NO_WARNINGS#include#include#includechar **pp=NULL;void ini ...

  2. Silverlight数据加载时,等待图标显示与隐藏(Loading)

    在我们开发SilverLight时,在加载大的数据时,需要很长时间,为了给用户一个好的印象,我们给一个正在加载的提示,下面我就把简单的程序贴出来,希望对大家有帮助 waiting.xaml<Us ...

  3. Qt Creator加载占位符数据

    Qt Creator加载占位符数据 加载占位符数据 使用虚拟模型 创建虚拟上下文 加载占位符数据 设计模式支持视图,模型和委托,因此,当您添加网格视图,列表视图或路径视图项时,将自动添加ListMod ...

  4. 加载mySQL数据到内存_【测试验证】数据库加载到内存占用大小

    介绍 数据库大小加载到内存占用是不是数据库的本身大小哪?今天忽然突发奇想于是就测试一下.首先我要说明的是我是在EF框架下进行测试的,不知道会不会与ado.net连接方式差生不同的结果,我仅仅是做记录, ...

  5. java 将数据加载到内存中_java 将数据加载到内存中的操作

    将数据加载到内存中 1.建立InitListener.java package app.util; import java.util.HashMap; import java.util.Map; im ...

  6. java 数据加载到内存jvm中

    为什么需要将java 数据加载到内存? 1 将数据加载到jvm运行内存中,会占用运行内存,一些对象,初始化数据,枚举等 缺点:如果值有修改,需要重新部署项目才能生效. 2 一些不想放到redis 缓存 ...

  7. python变量区变量保存与加载_python – Flask:使用全局变量将数据文件加载到内存中...

    我有一个大的 XML文件,它被打开,加载到内存中,然后由 Python类关闭.简化示例如下所示: class Dictionary(): def __init__(self,filename): f ...

  8. SpringBoot启动时将数据库数据加载到内存

    文章目录 为什么需要将参数存入缓存?以及选择何种方式 SpringBoot启动时将数据库参数表参数加载到内存 常见思路 思路1: 使用@PostConstruct 思路2: 实现CommandLine ...

  9. 可执行程序加载到内存的过程

    在linux中,程序的加载,涉及到两个工具,linker 和loader.Linker主要涉及动态链接库的使用,loader主要涉及软件的加载. 1.  exec执行一个程序 2.  elf为现在非常 ...

最新文章

  1. 设计模式复习-观察者模式
  2. 第三天学习Java的笔记(自增自减,赋值,比较,逻辑,三元)
  3. 前端学习(796):字符串不可变
  4. 漫步数理统计二十一——变换:随机向量
  5. MySQL启动关闭服务巨慢,这样解决!
  6. 无人车首例阵亡事件,AI教育春江水暖
  7. 100.于电脑右下角的小喇叭不见了的解决
  8. shell基础之变量及表达式
  9. ORACLE 12C连接时报ORA28040和ORA01017的错误
  10. 计算机中缺失freeimage.dll,FreeImage.dll
  11. 数据分析2——探索性数据分析(多因子与复合分析)
  12. 西电计科院Python程序设计随课笔记(李光夏)
  13. Codeforces 919C--Seat Arrangements
  14. SQL学习-向一张表中插入数据来源于另一张表
  15. 1.Redis客户端
  16. 数字练习_为什么要练习数字简约
  17. 工程师笔记|STM32U5带OEM Key保护的RDP降级
  18. 大数据培训技术phoenix表操作
  19. Jmeter断言(预期结果)-响应断言
  20. ACCA如何选择教材,备考方便有效

热门文章

  1. AR导航真的有前途,马云领衔1亿2500万投资
  2. php 日期相减 时分秒,PHP计算两个时间戳间隔的日时分秒的代码实例
  3. IIC控制设计读写EEPROM
  4. 一个python停车管理系统_Python简易版的停车管理系统
  5. 翁恺java答案第五周_[JAVA]翁恺老师零基础学java语言第五周素数例题中continue的困惑...
  6. 我们常说的算法时间复杂度和空间复杂度到底是什么?
  7. Stanford Parser的学习之开篇(一)
  8. android中gridview实现动态表格,Android--GridView实现动态文字排版
  9. jqGrid获取数据库数据的方式
  10. 无线(互联网)+有线(内网)上外网设置