gpt4 book ai didi

c - RGB565 转灰度

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:04 26 4
gpt4 key购买 nike

我正在尝试将 RGB565 图像转换为灰度图像。

我使用以下代码进行转换。我有一个 rgb565 像素。我正在获取 R、G 和 B 值并进行转换操作。获得灰度后,我将重建一个 16 位像素值,其中 R、G 和 B 将具有相同的灰度值。

 int16_t pixel = *buffer;
int16_t red = ((pixel & 0xF800)>>11);
int16_t green = ((pixel & 0x07E0)>>5);
int16_t blue = (pixel & 0x001F);
int16_t grayscale = (0.2126 * red) + (0.7152 * green) + (0.0722 * blue);
*buffer=(grayscale<<11)+(grayscale<<5)+grayscale;

在这里,我期待一张灰度图像。然而,正在发生的是 ->

绿色有 6 位空间(幅度更大)。生成的灰度值应为 5 位,以便我适合 R G 和 B。但是,完成的计算提供了 6 位灰度,因此我没有得到正确的灰度图像。

谁能帮我将 rgb565 转换为灰度并将其存储为 16 位。

最佳答案

Green 组件有 6 位,不是因为它需要更高的值,而是因为它需要更高的分辨率(参见 RGB 565 - Why 6 Bits for Green Color)。

因此,要使值范围等于 RedBlue,只需将 Green 值除以 2:

 int16_t pixel = *buffer;
int16_t red = ((pixel & 0xF800)>>11);
int16_t green = ((pixel & 0x07E0)>>5);
int16_t blue = (pixel & 0x001F);
int16_t grayscale = (0.2126 * red) + (0.7152 * green / 2.0) + (0.0722 * blue);
// ^^^^^
*buffer=(grayscale<<11)+(grayscale<<6)+grayscale;

关于c - RGB565 转灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58449462/

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