qt显示RGB彩色图
2016-03-11 19:08
330 查看
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中的setAttribute()方法
- QT 从尾部截取字符串(从路径中截取文件名)
- QT中对2维的处理
- ubuntu 下运行qtcreator
- 使用Qt开发文本编辑器(二):标签页式文档实现
- 向qt中添加库文件(以ffmpeg静态库为例)
- QT+opencv配置方法
- Qt 命令行编译
- 自动化测试工具QTP的学习
- Qt error: cannot open
- mqtt service
- mqtt bug
- qt 嵌入式下 运行 client 问题
- QT链接SQL server
- Qt中屏蔽警告和调试信息
- QTP系统参数设置对录制的影响
- qt 使用非系统字库
- Qt学习之路(17): Qt标准对话框之QMessageBox
- 用Qt开发第一个Hello World程序
- Qt安装后配置环境变量(Mac)