gpt4 book ai didi

c++ - QImage::pixel函数的10位输出具体是什么意思?

转载 作者:行者123 更新时间:2023-11-28 04:15:24 25 4
gpt4 key购买 nike

我目前使用的是 Qt 5.12.3,在理解 QImage::pixel 函数的 10 位数字输出时遇到问题。对于此代码:

QImage image;
image.load("D:/qtProjects/../image.png", "PNG");

for(int i = 0 ; i < 1920; i++)
for(int j = 0; j < 1080; j++)
std:: cout << image.pixel(i, j) << "\n";

在我收到的控制台输出的一部分中:

4278190080427865166442785858714278651664

问题是我无法理解如何使用在线计算器中的那些 10 位数字来查看实际像素颜色。我所知道的是它以某种方式解释 ARGB 或 RGBA 格式的颜色。感谢关注!

最佳答案

这些数字是 4 种颜色分量(红色、绿色、蓝色和 alpha,每个 8 位,不一定按此顺序)打包成一个 32 位无符号整数。

要提取这些组件,本质上您需要提取构成 4 字节整数的所有字节的值。为此,您有多种方法,但最容易理解的方法可能是:连续除以 256。

由于每个字节的值都在 [0..255] 范围内,因此每次计算该大数除以 256 的余数时,您将提取 1 个字节的信息(将一个字节视为基数 - 256 位。)

所以,这是代码:

unsigned char b0 = x % 256;
x = x / 256;
unsigned char b1 = x % 256;
x = x / 256;
unsigned char b2 = x % 256;
x = x / 256;
unsigned char b3 = x % 256;

在上面的代码中,b0 将接收到 x 中最低有效字节的值,而 b3 将获得最高有效字节.它们中的哪一个将是哪个组件将取决于颜色组件的顺序(无论是 RGBA 还是 BGRA 还是 ARGB 还是 ABGR,)并且很可能还取决于您机器的字节顺序。但我认为这很容易弄清楚。

鉴于您发布的样本数字的外观,我认为数字中最重要的字节是 alpha channel (即我代码中的 b3 为您提供了 alpha 值,)并且可能使 b0 为红色,b1 为绿色,b2 为蓝色。可能吧。

关于c++ - QImage::pixel函数的10位输出具体是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56760124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com