hex <-> RGB <-> HSV Преобразование цветового пространства с Python - PullRequest
0 голосов
/ 30 августа 2010

Для этого проекта Я использую Colourys Python для преобразования RGB в HSV и наоборот, чтобы иметь возможность манипулировать насыщенностью и яркостью, но я заметил, что некоторые цвета дают ложные результаты.

НапримерЕсли я беру какие-либо основные цвета, проблем нет:

image

Однако, если я выбрал случайный цвет RGB и преобразовал его в HSV, я иногда получал поддельные результаты.

Иногда эти фиктивные результаты возникают, когда я увеличиваю или уменьшаю яркость или насыщенность цвета.

В этом примере ложность 10%, 20% и насыщенность 100% являются поддельными:

image

Я не совсем уверен, почему это происходит, и как мне это исправить ..

1 Ответ

2 голосов
/ 30 августа 2010

Проблема в вашем коде dec2hex:

def dec2hex(d):
    """return a two character hexadecimal string representation of integer d"""
    r = "%X" % d
    return r if len(r) > 1 else r+r

Когда ваше значение меньше 16, вы дублируете его, чтобы получить значение, другими словами, умножив его на 17. Вы хотите это:

def dec2hex(d):
    """return a two character hexadecimal string representation of integer d"""
    return "%02X" % d
...