我一直很想获得正确的值。在此示例中,我有一台向我发送紫色的设备,其中发送给我的数据是:
Saturation: 68
Brightness: 100
ColorTemperature: 4049
Hue: 0
我需要将其转换为RGB。当我尝试内置方法时:
import colorsys
hue = 0
saturation = 68
brightness = 100
colortemp = 4049
r, g, b = colorsys.hsv_to_rgb(hue, saturation, brightness)
我得到以下结果:
Red: 100 | Green: -6700.0 | Blue: -6700.0
因此,我进行了一些研究,发现this SO article解释了数字必须是十进制值,并在声明为
时尝试用其写法进行尝试。该函数期望s(饱和度)和v(值)的十进制,而不是百分比。除以100。
对代码进行以下更改:
hue = 0
saturation = .68
brightness = 1.0
colortemp = 4049
结果:
Red: 1.0 | Green: 0.32 | Blue: 0.32
或乘以255:
Red: 255.0 | Green: 81.6 | Blue: 81.6
该颜色是红色。
我在做什么错?我知道,使用吸管抓取颜色时,RGB的结果应该在102、60、250左右,但是我无法获得接近该值的任何地方。
要使事情变得更加复杂,在某些时候,我将需要再次从RGB转换回HSV。如果解决方案是因为我只是使用了不正确的值或某些东西,那么我认为要转换回去的Python方法是正确的,但我现在就被卡住了。