如何用Qt显示16位的Raw图像,将其转为QImage的类型

qq_38439721 2020-04-17 05:19:36
现在我有一些CT的原始图像,3072*1944的大小,两位为一个像素,通过读取赋值之后并不能正确显示,求帮助!(image设置的格式是RGB16,图片是灰度图但是Grayscale8是8位的,试了也没有用)
unsigned short * Ii = (unsigned short*)malloc(vol*sizeof(unsigned short));

size_t size =fread(Ii,sizeof(unsigned short),vol,fp) ;

int k=0;
for(int j=0;j<1944;j++){
for(int i=0;i<3072;i++){

QRgb Value = qRgb(Ii[k],Ii[k],Ii[k]);

image.setPixel(i,j,Value);
k++;
}
}
ui->label_2->setPixmap(QPixmap::fromImage(image));
...全文
2516 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mideum 2020-04-18
  • 打赏
  • 举报
回复
可以下载一个Raw Viewer之类的Raw图片查看器,各种格式一个个试
mideum 2020-04-18
  • 打赏
  • 举报
回复
只从raw数据没有办法知道格式的,你要问数据的提供方或者设备提供方或者看说明文档之类的
或者就是自己一个个试,就我的经验16bit的RGB不常用,YUV的可能性更大
sizeInBytes()是从5.10开始有的,如果你用的是旧的版本,就用byteCount()
qq_38439721 2020-04-18
  • 打赏
  • 举报
回复
image后面无法调用sizeInBytes()这个函数,然后我想问一下怎么才能看图片具体格式,之前就想看了,但是找不到方法。
mideum 2020-04-17
  • 打赏
  • 举报
回复
补充一下,想起来16bit还有一个很有可能的格式,就是YUV422
如果是YUV的话就不能直接用在QImage上了,要先把数据转成RGB才行
mideum 2020-04-17
  • 打赏
  • 举报
回复
QImage image(3072, 1944, QImage::Format_RGB16);
size_t size =fread(bits,sizeof(unsigned short),vol,fp);
类似这样试试,读前应该确认一下vol*2应该等于image.sizeInBytes()
还有确认一下你的图片格式,16位一个像素有多种可能,除了RGB6,还有RGB555,ARGB4444。
1.该程序用QT开发,实现图片导入、显示、缩放、拖动及处理(冷暖色、灰度、亮度、饱和、模糊、锐化)。 经实测,我写的这个软件在导入10000*7096像素的超大图片的时候,缩放的速度比2345看图软件还快,2345缩放超大图会卡顿,但本软件不会^_^ 关于程序中缩放拖动部分的说面参见我的博客https://blog.csdn.net/weixin_43935474/article/details/89327314; 2.载入图片后,鼠标移动的时候可以显示鼠所在点的图像的坐标以及灰度; 3.缩放的时候,图片右上角可以显示当前图片的缩放比例; 4.用户可导入16深的tiff灰度图文件(一般来说是由相机拍摄的灰度图数据),导入16深的tiff的时候,用户需要先点击界面左上角的checkbox,然后再导入tiff图片,否则图片解析不出来。 注:Qt自带的QImage只能导入8深的tiff灰度图,如果用qt的QImage导入16深的灰度图,图像数据会被强制转换成argb格式的图像,数据就被更改了,所以我自己编写一个解析tiff文件的功能,我翻阅了很多博客,其中如下链接给我的帮助最大: https://blog.csdn.net/chenlu5201314/article/details/56276903 上述博客作为详细解析tiff文件结构的说明文档,写的非常详细,我也是根据上面的内容,自己编写了一个解析tiff文件的类(当然功能很少,只能解析符合特定条件的tiff文件) //************************************************************ //by Bruce Xu //注:解析tiff的类只解析特定的tiff文件! //1.解析的tiff文件中只存在一幅图,如果文件中存在多幅图,本类不支持解析! //2.图像数据为816深度的灰度图,如果是其他类型的图片,本类不支持解析! //3.图片没有被压缩过! //************************************************************

21,450

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧