项目原因,需要将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显示效果一样。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!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控件不可编辑、密文输入、输入格式等小技巧