有点晚了,但这似乎仍然是一件很难找到工具的事情。
这个 repo 可以为你完成这项工作:https ://github.com/iamh2o/rgbw_colorspace_converter/
我和一个朋友一起写了这个模块,这样“颜色”对象可以通过几个颜色系统来实例化,并且该对象可以输出到它支持的所有其他颜色系统的翻译——经过大量研究(一个关键部分是https://www.neltnerlabs.com/saikoled/how-to-convert-from-hsi-to-rgb-white),我们终于搞定了 [HSI/HSL/HSV/RGB/HEX] -> RGBW 转换。
有很多软件包解决了一般色彩空间问题,但似乎 RGBW 案例非常特定于物理照明/LED,不适用于数字显示器,RGBW 不包含在我看过的任何模块中。
这个模块的杀手锏功能是,您实例化的颜色对象可以根据您的需要在多个颜色系统中进行操作(您创建它的不同系统),并且它将保持对其他空间的所有翻译都是最新的- 它超级快,我们还没有让它成为帧速率限制组件。
所以像这样的事情将是一个通过完全明亮、完全饱和的彩虹的循环(注意 RGB 与 HSV 代码如何远不适合编程操作):
from rgbw_colorspace_converter.colors.converters import RGB
color = RGB(255,0,0)
ctr = 0
while ctr < 10:
color.hsv_h += .1
print(f"HSV:{color.hsv} RGB:{color.rgb} HSI:{color.hsi} HEX:{color.hex}")
ctr += 1
# "H" in hsv is actually expressed in 360 degrees, and it is cylindrical. We've normalized it to being between 0-1 (so H=0=H=1 - both are red)
HSV:(0.0, 1.0, 1.0) RGB:(255, 0, 0) HSI:(0.0, 1.0, 0.33333) HEX:#ff0000
HSV:(0.1, 1.0, 1.0) RGB:(255, 153, 0) HSI:(36.0, 1.0, 0.533328) HEX:#ff9900
HSV:(0.2, 1.0, 1.0) RGB:(203, 255, 0) HSI:(72.23529411764707, 1.0, 0.5986868235294117) HEX:#cbff00
HSV:(0.3, 1.0, 1.0) RGB:(51, 255, 0) HSI:(108.0, 1.0, 0.399996) HEX:#33ff00
HSV:(0.4, 1.0, 1.0) RGB:(0, 255, 102) HSI:(144.0, 1.0, 0.46666199999999997) HEX:#00ff66
HSV:(0.5, 1.0, 1.0) RGB:(0, 255, 255) HSI:(180.0, 1.0, 0.66666) HEX:#00ffff
HSV:(0.6, 1.0, 1.0) RGB:(0, 102, 255) HSI:(216.0, 1.0, 0.46666199999999997) HEX:#0066ff
HSV:(0.7, 1.0, 1.0) RGB:(50, 0, 255) HSI:(251.76470588235296, 1.0, 0.39868882352941176) HEX:#3200ff
HSV:(0.8, 1.0, 1.0) RGB:(204, 0, 255) HSI:(288.0, 1.0, 0.599994) HEX:#cc00ff
HSV:(0.9, 1.0, 1.0) RGB:(255, 0, 152) HSI:(324.2352941176471, 1.0, 0.5320208235294118) HEX:#ff0098
HSV:(1.0, 1.0, 1.0) RGB:(255, 0, 0) HSI:(0.0, 1.0, 0.33333) HEX:#ff0000