了解RGB565值

问题描述 投票:0回答:1

this image我得到了一张320x240的图像,并试图了解RGB5655的工作过程。我将图像转换为字节数组(每个像素 2 个字节),字节数组非常大(153600 个值),我只需要放置第一个:

0x63, 0x08, 0x83, 0x08, 0xa4, 0x08, 0xa4, 0x08, 0xa4, 0x08, 0xa4, 0x08, 0xc5, 0x08, 0xc5, 0x10, 0xc5, 0x08, 0xc5, 0x08, 0xc5, 0x10, 0xc5, 0x10, 0xc5, 0x10, 0xc5, 0x10, 0xc5, 0x10, 0xc5, 0x10, 0xc6, 0x10, 0xc6, 0x10, 0xc6, 0x10, 0xe6, 0x10, 0xe6, 0x10, 0xe6, 0x10, 

我认为rgb565值是这样的:

 first uint16 value = 0x63 << 8 + 0x08`
 second uint16 value = 0x83<<8 + 0x08

为了检查这一点,我使用图像到 RGB565 转换器并看到这个:

6300,8308,a408,a408,a408,a408,a408,c408
a408,a408,a508,a508,a508,c508,a508,a508
c508,c508,c508,c508,c608,c608,e610,e610
e610,e610,e610,0611,0611,0611,e610,c608
c610,a510,a508,a508,a408,a408,a408,a408

这并不像我想象的那样。似乎数组的第一个值被单独保留,然后从 2 和第三个值中获取 uint16 值,但是...这里的问题是,如果数组中只有 4,为什么会有第五个 uint16 a408 ?然后数组中是 0xc510 值,但在 RGB565 中是 0xc408? 有人可以解释这个过程或给我指出一些参考资料吗? 问候 加斯顿

P.S 我用这个link来获取字节数组 我已经尝试通过方程获取 RGB565 的第一个值,但是我得到的值和从转换器 RGB565 得到的值之间没有关系

python process equation
1个回答
0
投票

使用您最喜欢的图像应用程序将 JPG 转换为 BMP 格式。 Windows Paint 可以做到这一点,Linux 有任何标准也可以做到。

然后,您可以直接从BMP文件中提取像素数据。 转换很可能会生成每像素 24 位的图像,但您可以在 BMP 文件的标头信息中找到答案。 其中还有像素数据的位置。 在维基百科页面查找“BMP 格式”。 很容易理解,只需从 wiki 的格式图像即可。

如果是 24 位,数据将为一字节蓝色、一字节绿色、一字节红色等......直到文件末尾。 是的,数据存储为 BGR 而不是 RGB。

您现在拥有的数据是 RGB888。 您可以轻松地将其转换为 RGB565。 我这里有一个最近的线程(StackOverflow),展示了三种不同的转换算法。

这是我的快速尝试。 我没有费心旋转图像。 LCD 图像看起来比我糟糕的相机所允许的要好。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.