将 hsv 转换为 rgb 并返回
Converting hsv to rgb and back
我一直在努力获取正确的值。在这个例子中,我有一个设备向我发送紫色,它发送给我的数据是:
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 解释了数字需要是十进制值,并在声明
时尝试了他们的文章
That function expects decimal for s (saturation) and v (value), not percent. Divide by 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 转换回来的方法是正确的,但我现在被卡住了。
我认为您的设备向您发送了不正确的信息。您为 HSV 提供的值是 红色。
我一直在努力获取正确的值。在这个例子中,我有一个设备向我发送紫色,它发送给我的数据是:
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 解释了数字需要是十进制值,并在声明
时尝试了他们的文章That function expects decimal for s (saturation) and v (value), not percent. Divide by 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 转换回来的方法是正确的,但我现在被卡住了。
我认为您的设备向您发送了不正确的信息。您为 HSV 提供的值是 红色。