Преобразование 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, выделены красным.

ColorPicker

Другие вопросы по тегам