【问题标题】:24-Bit color decoding help (python)24 位颜色解码帮助 (python)
【发布时间】:2021-03-22 17:16:40
【问题描述】:

使用我的 LED 灯条,我使用函数 Color(0-255, 0-255, 0-255) 用于 rgb,该函数编码为 24 位颜色并写在下面

Def Color(red, green, blue, white = 0):
    """Convert the provided red, green, blue color to a 24-bit color value.
       Each color component should be a value 0-255 where 0 is the lowest intensity
       and 255 is the highest intensity."""
    Return (white << 24) | (red << 16) | (green << 8) | blue

稍后我用另一个函数检索这个 24 位颜色,我需要将它解码回 (0-255, 0-255, 0-255) 我不知道该怎么做...

我使用了打印功能来查看发生了什么

一个像素(红色 0,绿色 255,蓝色 0)返回 16711680

一个像素(红色 255,绿色 0,蓝色 0)返回 65280

一个像素(红色 0,绿色 0,蓝色 255)返回 255,这对我来说很有意义

我怎样才能有效/快速地解码这个(在 rpi 零 w 上运行)必须在 python 中

【问题讨论】:

  • 当您使用 32 位 RGBW 时,为什么要谈论 24 位 RGB?而这里的白色是什么意思?
  • 你的红色和绿色可能会混淆,我想。十六进制值 16711680 == 0xff0000。在这里,每两个十六进制数字代表一种颜色,根据您的值,您就有 GRB。正如 Danny 在他的回答中正确指出的那样,您需要查看位移和位掩码以获得您正在寻找的值。
  • 嘿,这个函数不是我的代码,我猜是因为 LED 灯带是否有 RGBW,但我的灯带没有,所以它只是 RGB

标签: python image decode rgb neopixel


【解决方案1】:

全彩色像素有红、绿、蓝(24 位)或 alpha、红、绿、蓝(32 位)(子像素顺序可能不同!),而不是白、红、绿、蓝。 Alpha = 不透明度。

解码 RGB 24bit(按此顺序):

B = pixel & 0xff
G = (pixel >> 8) & 0xff
R = (pixel >> 16) & 0xff

其中 0xff = 255,& = 按位与,>> = 右移 n 位(或除以 2^n)。

对于其他像素编码,顺序会改变(你也可能有 alpha)。

【讨论】:

  • 谢谢,我对此很陌生,对这些功能不太了解,但这很好用。就我而言,永远不会有 alpha(白色)并且我知道 RGB 可能出现故障,我相信我的条带是 GRB 但这不是问题。再次感谢!
猜你喜欢
  • 2013-12-10
  • 2011-08-02
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多