Преобразование HSV в RGB и обратно
У меня было чертовски много времени, чтобы получить правильные значения. В этом примере у меня есть устройство, отправляющее мне фиолетовый цвет, где данные, которые оно отправляет мне:
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
Поэтому я провел некоторое исследование и нашел эту SO статью, в которой объясняется, что числа должны быть десятичными значениями, и попробовал их с записью, когда указано, что числа
Эта функция ожидает десятичного числа для 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
Этот цвет красный.
Что я делаю неправильно? Я знаю, что при использовании пипетки для захвата цвета результаты должны быть около 102, 60, 250 для RGB, но я не приближаюсь к этому значению.
Чтобы сделать это еще более сложным, мне нужно, в какой-то момент, снова преобразовать RGB в HSV. Если решение заключается в том, что я просто использую неправильные значения или что-то еще, то я предполагаю, что метод Python для обратного преобразования будет правильным, но я просто застрял сейчас.
1 ответ
Я думаю, что ваше устройство отправляет вам неверную информацию. Значения, которые вы указываете для HSV, выделены красным.