在 Qt 中显示 QImage 的灰度并调整其大小

2024-03-23

我已经能够使用如下内容在 Qt 中的标签中显示图像:

transformPixels(0,0,1,imheight,imwidth,1);//sets unsigned char** imageData

unsigned char* fullCharArray = new unsigned char[imheight * imwidth];
     for (int i = 0 ; i < imheight ; i++)
         for (int j = 0 ; j < imwidth ; j++)
                fullCharArray[(i*imwidth)+j] = imageData[i][j];

QImage *qi = new QImage(fullCharArray, imwidth, imheight, QImage::Format_RGB32);

ui->viewLabel->setPixmap(QPixmap::fromImage(*qi,Qt::AutoColor));

所以 fullCharArray 是从 2D 数组 imageData 映射而来的无符号字符数组,换句话说,它是 imheight * imwidth 字节。

问题是,标签中似乎只显示了我的图像的一部分。图像非常大。我想显示完整的图像,缩小以适合标签,并保留纵横比。

另外,QImage 格式是我能找到的唯一一种似乎可以近似表示我想要显示的图像的格式,这是我应该期望的吗?我每个像素仅使用一个字节(无符号字符 - 值从 0 到 255),而且看起来 RGB32 对于该数据类型没有多大意义,但其他类型都没有显示任何远程正确的内容

编辑: 按照丹·加拉格尔的建议,我实现了这段代码:

QImage *qi = new QImage(fullCharArray, imwidth, imheight, QImage::Format_RGB32);
int labelWidth = ui->viewLabel->width();
int labelHeight = ui->viewLabel->height();

QImage small = qi->scaled(labelWidth, labelHeight,Qt::KeepAspectRatio);
ui->viewLabel->setPixmap(QPixmap::fromImage(small,Qt::AutoColor));

但这会导致我的程序“意外完成”,代码为 0


Qt 不直接支持灰度图像构建。您需要使用 8 位索引彩色图像:

QImage * qi = new QImage(imageData, imwidth, imheight, QImage::Format_Indexed8);
for(int i=0;i<256;++i) {
    qi->setColor(i, qRgb(i,i,i));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Qt 中显示 QImage 的灰度并调整其大小 的相关文章

随机推荐

  • Set.toString() 是如何实现的?

    The toString 方法未被覆盖Set或其层次结构 那么元素是如何打印的呢 import java lang Math import java util HashSet class Hello public String name H
  • 通过wicket动态编写脚本src

    我希望我的页面能够动态加载 javascriptbody 我正在使用检票口1 4版所以JavaScriptResourceReference 在我的版本中不存在 据我检查 事实并非如此 我该如何解决这个问题 提前致谢 我将我的评论指定为答案
  • 如何在 TypeScript 中处理 ISO 日期字符串?

    我是打字稿的新手 所以我正在努力掌握它的窍门 网络请求将返回一个 JSON 对象 其中包含 ISO 日期字符串格式的字段 data Data when 2016 07 13T18 46 01 933Z 当我为此接口创建类型签名时 是否有任何
  • Clozure Common Lisp - TCP 套接字编程 - 发送回复

    我有一个非常小的程序 它打开一个套接字并接受一个连接 然后它会获取远程 IP 和端口 我想向远程计算机 telnet 发送一条短信并关闭连接 我无法确定哪个函数用于向 telnet 客户端发送消息 The Clozure手册 http cc
  • Matplotlib AttributeError:“模块”对象没有属性“popall”

    当尝试使用 pyplot 绘制图表时 我运行以下代码 from matplotlib import pyplot as plt x 6 5 4 y 3 4 5 plt plot x y plt show 这将返回以下错误 Attribute
  • 谷歌新闻,左导航 CSS 技巧?或 jQuery 技巧

    我对此很陌生 查看 Google 新闻 上下滚动页面时请注意左侧导航 看看是如何滚动一小段 然后在消失之前粘在页面顶部的吗 关于如何做到这一点有什么想法吗 jQuery 和 CSS 可以复制这一点吗 如果是这样 有什么建议吗 YouTube
  • 未找到 NetBeans 10 JUnit Jar

    我新安装了 NetBeans 10 尝试运行我刚刚创建的一些初始单元测试时 出现以下错误 The
  • Ellipsize 不适用于自定义 listView 内的 textView

    我有一个 listView 其中包含由下面的 xml 布局定义的自定义对象 我希望 id 为 info 的 textView 在一行上省略 并且我尝试使用属性 android singleLine true android ellipsiz
  • jenkinsfile 管道按代理分组阶段

    我有什么 我正在尝试使用两种不同的代理来运行我的詹金斯管道 我想在同一个代理上执行某些流程 但到目前为止我无法执行此操作 因为代理定义只有 2 个选项 我可以在管道顶部执行 或者我可以将代理定义到每个阶段 我有这个 pipeline age
  • 用 CSS 使图像变灰?

    使用 CSS 让图像显示为 灰色 的最佳方法 如果有 是什么 即不加载单独的灰色图像版本 我的上下文是 表格中的行在最右侧的单元格中都有按钮 并且某些行需要看起来比其他行更亮 因此 我当然可以轻松地使字体变亮 但我也希望使图像变亮 而不必管
  • Python pandas系列:将浮点数转换为字符串,保留空值

    转换为字符串后如何保留空值 我正在处理社会安全号码 需要在浮点数和字符串之间来回切换 import pandas as pd import numpy as np x pd Series np nan 123 np nan 456 dtyp
  • 如何使用phpmyadmin导出所有数据库

    可以使用phpMyadmin一次性导出所有数据库吗 如果不是 最好的方法是什么 提前致谢 以下是使用 phpMyAdmin 导出所有 mySQL 数据库的步骤 2015 年 12 月 随着 phpMyAdmin 的发展 添加了新功能 打开
  • 当 setup.py 使用 Python 版本 3 解释器运行时,如何构建 py2 轮包?

    我有一个应该是 Python 的包仅版本 2但需要构建运行版本 3 解释器 The setup py这个包的内容看起来像点击 from setuptools import setup setup python requires lt 3 0
  • “编辑前 200 行”不适用于 SQL Server 16.0 - Express Edition

    我正在尝试在 SQL Server Express 版本中 编辑前 200 行 但它返回的是空白文件 如下所示 显示带有禁用工具的空白文件 https i stack imgur com CvpH7 png 我已经在本地安装了这个 SQL
  • 将渐变效果应用于模糊视图

    如何在 Swift 中添加具有模糊效果的渐变视图 我可以很轻松地向视图添加渐变层 CAGradientLayer 我还可以单独添加模糊视图 UIVisualEffectView 如何将两者结合起来创建一个模糊视图 该视图还具有渐变元素 其中
  • 当我单击画布并拖动鼠标时,光标会变为文本选择光标。我怎样才能防止这种情况发生?

    这是一个小提琴 http jsfiddle net MZ9Xm http jsfiddle net MZ9Xm 注意 以下情况发生在 Chrome 22 0 1221 1 中 但不会发生在 Firefox 14 0 1 中 Ubuntu l
  • Java 随机崩溃(可能的罪魁祸首:ntdll.dll?)

    我有一个用 Java 编写的程序 并使用 Windows 任务计划程序设置为每 5 分钟运行一次 它执行 C Program Files Java jre7 bin javaw exe 并传递 jar 文件和所有命令行参数 在大多数情况下
  • 如何安全地镜像 git 存储库?

    我想通过后台作业镜像一些 git 存储库 git clone mirror and git remote update不会保留通过强制推送未引用的对象 但我也想保留这些对象以防黑客攻击 有没有什么工具可以执行安全的 git 镜像 虽然缺少
  • Tone.PitchShift 和 Howler.js 问题

    我喜欢在我的 Meteor 应用程序中使用 Howler js 然而 播放速率功能导致了我不想要的音调变化 我只想延长时间 并保持音调 因此 我的解决方案是对其进行音调变换以 纠正 音调 看起来很简单 这就是我选择使用的原因https to
  • 在 Qt 中显示 QImage 的灰度并调整其大小

    我已经能够使用如下内容在 Qt 中的标签中显示图像 transformPixels 0 0 1 imheight imwidth 1 sets unsigned char imageData unsigned char fullCharAr