Qt加载RGB内存数据,并显示彩色图
最近在做图像处理,需要将试验得到的数据转化成RGB,再显示到界面
顺便学习了如下三个知识点:
- RGB数据生成BMP位图
- YUV 格式与 RGB 格式的相互转换公式总结(C++版)
- 将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内存数据,并显示彩色图相关推荐
- c语言文件 加载内存吗,把文件中的数据加载到内存进行查找C语言实现.docx
把文件中的数据加载到内存进行查找C语言实现 #define _CRT_SECURE_NO_WARNINGS#include#include#includechar **pp=NULL;void ini ...
- Silverlight数据加载时,等待图标显示与隐藏(Loading)
在我们开发SilverLight时,在加载大的数据时,需要很长时间,为了给用户一个好的印象,我们给一个正在加载的提示,下面我就把简单的程序贴出来,希望对大家有帮助 waiting.xaml<Us ...
- Qt Creator加载占位符数据
Qt Creator加载占位符数据 加载占位符数据 使用虚拟模型 创建虚拟上下文 加载占位符数据 设计模式支持视图,模型和委托,因此,当您添加网格视图,列表视图或路径视图项时,将自动添加ListMod ...
- 加载mySQL数据到内存_【测试验证】数据库加载到内存占用大小
介绍 数据库大小加载到内存占用是不是数据库的本身大小哪?今天忽然突发奇想于是就测试一下.首先我要说明的是我是在EF框架下进行测试的,不知道会不会与ado.net连接方式差生不同的结果,我仅仅是做记录, ...
- java 将数据加载到内存中_java 将数据加载到内存中的操作
将数据加载到内存中 1.建立InitListener.java package app.util; import java.util.HashMap; import java.util.Map; im ...
- java 数据加载到内存jvm中
为什么需要将java 数据加载到内存? 1 将数据加载到jvm运行内存中,会占用运行内存,一些对象,初始化数据,枚举等 缺点:如果值有修改,需要重新部署项目才能生效. 2 一些不想放到redis 缓存 ...
- python变量区变量保存与加载_python – Flask:使用全局变量将数据文件加载到内存中...
我有一个大的 XML文件,它被打开,加载到内存中,然后由 Python类关闭.简化示例如下所示: class Dictionary(): def __init__(self,filename): f ...
- SpringBoot启动时将数据库数据加载到内存
文章目录 为什么需要将参数存入缓存?以及选择何种方式 SpringBoot启动时将数据库参数表参数加载到内存 常见思路 思路1: 使用@PostConstruct 思路2: 实现CommandLine ...
- 可执行程序加载到内存的过程
在linux中,程序的加载,涉及到两个工具,linker 和loader.Linker主要涉及动态链接库的使用,loader主要涉及软件的加载. 1. exec执行一个程序 2. elf为现在非常 ...
最新文章
- 设计模式复习-观察者模式
- 第三天学习Java的笔记(自增自减,赋值,比较,逻辑,三元)
- 前端学习(796):字符串不可变
- 漫步数理统计二十一——变换:随机向量
- MySQL启动关闭服务巨慢,这样解决!
- 无人车首例阵亡事件,AI教育春江水暖
- 100.于电脑右下角的小喇叭不见了的解决
- shell基础之变量及表达式
- ORACLE 12C连接时报ORA28040和ORA01017的错误
- 计算机中缺失freeimage.dll,FreeImage.dll
- 数据分析2——探索性数据分析(多因子与复合分析)
- 西电计科院Python程序设计随课笔记(李光夏)
- Codeforces 919C--Seat Arrangements
- SQL学习-向一张表中插入数据来源于另一张表
- 1.Redis客户端
- 数字练习_为什么要练习数字简约
- 工程师笔记|STM32U5带OEM Key保护的RDP降级
- 大数据培训技术phoenix表操作
- Jmeter断言(预期结果)-响应断言
- ACCA如何选择教材,备考方便有效
热门文章
- AR导航真的有前途,马云领衔1亿2500万投资
- php 日期相减 时分秒,PHP计算两个时间戳间隔的日时分秒的代码实例
- IIC控制设计读写EEPROM
- 一个python停车管理系统_Python简易版的停车管理系统
- 翁恺java答案第五周_[JAVA]翁恺老师零基础学java语言第五周素数例题中continue的困惑...
- 我们常说的算法时间复杂度和空间复杂度到底是什么?
- Stanford Parser的学习之开篇(一)
- android中gridview实现动态表格,Android--GridView实现动态文字排版
- jqGrid获取数据库数据的方式
- 无线(互联网)+有线(内网)上外网设置