一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

项目原因,需要将GPU加速后输出的float格式图像在QT界面上显示,所以不能直接用Opencv中的CV_32FC1来显示。

目前版本QImage支持的图像格式如下图:

因此,选用QImage中的Format_Grayscale16格式来显示cuda运算后输出的float格式图像,将float格式转成ushort格式。

前提and原理:

  从表格中可以看出,float格式的取值范围为(-1~1)或(0~1),unit 16的取值范围是(0~65535)。在GPU加速中,对原始图像做了归一化处理,将图像像素值归一化到(0~1)之间,得到了float图像,因此,只需要将输出的float格式图像对应的像素值还原到所用格式的取值范围即可正常显示图像。

关键代码:

复制代码
 1     //QImage显示
 2     //QImage img;   
 3     //32float转ushort
 4     img =  QImage(xsize * 2, ysize * 2, QImage::Format_Grayscale16);
 5     pDst = (ushort*)img.bits();
 6 
 7     for (int i = 0; i < xsize * 2; i++)
 8     {
 9         for (int j = 0; j < ysize * 2; j++)
10         {
11             *(pDst) = (ushort)((Img_show_final[i * xsize * 2 + j]) * 65535 );
12             pDst++;
13         }
14     }
15 
16     return img;
复制代码

经测试,QImage::Format_Grayscale16与cv::CV_32FC1显示效果一样。

posted on   一杯清酒邀明月  阅读(353)  评论(1编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2020-12-10 Qt QTextBrowser的append()和insertPlainText()
2020-12-10 Qt QTextEdit/QTextBrowser append() 函数换行解决方法
2020-12-10 Qt 基本控件——TextBrowser
2020-12-10 Qt 设置QLineEdit控件不可编辑、密文输入、输入格式等小技巧
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示