PyQt5 QColor преобразование из HSV - PullRequest
0 голосов
/ 03 марта 2020

Я делаю палитру цветов HSV для Krita с PyQt5. Я хотел использовать класс QColor, чтобы позаботиться о преобразовании цветов дисплея, однако я не смог преобразовать цвет с успехом.

Я использовал этот селектор цвета в качестве ориентира для моего вывода:

https://www.google.com/search?sxsrf=ACYBGNR9_2R1jGyxkqbdM8DVZfU-8hogYg%3A1583142187803&source=hp&ei=K9VcXqrKLuyMlwTorLH4Dg&q=color+picker+hex&oq=color+picker&gs_l=psy-ab.3.0.35i39l2j0l8.3060.6761..8026...2.0..0.310.1102.11j3-1......0....1..gws-wiz.....10..35i362i39j0i10.C-faeoukSfM

случайный цвет выбора был:

HEX=(#eb4034)
HSV=(7, 78, 92)

Когда я пытаюсь преобразовать его с этим кодом:

from PyQt5.QtGui import QColor

hsv = QColor.fromHsv(7,78,92,255)
color = str(hsv.redF()*255)+" | "+str(hsv.greenF()*255)+" | "+str(hsv.blueF()*255)

print(str( color ))

мой вывод:

92.0 | 67.14007782101167 | 63.85992217898833
[Finished in 0.168s]

вместо:

235, 64, 52

Как ввести цвет HSV в QColor, а затем преобразовать его в RGB для отображения?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Эталонные значения для цвета HVS (т. Е. (7, 78, 92)) представлены в градусах, процентах и ​​процентах соответственно, тогда как QColor.fromHSV ожидает значения в диапазоне 0-255. Чтобы преобразовать ссылочные значения во что-то, что может использоваться QColor, вы можете попробовать что-то вроде этого

HSV=(7, 78, 92)
hue, sat, value = HSV
hue = int(hue*255/360)
sat = int(sat*255/100)
value = int(value*255/100)

hsv = QColor.fromHsv(hue, sat, value, 255)
color = str(hsv.redF()*255)+" | "+str(hsv.greenF()*255)+" | "+str(hsv.blueF()*255)

print(str( color ))

# output: 234.0 | 64.42023346303502 | 52.307392996108945
1 голос
/ 03 марта 2020

Вы можете использовать метод getRgb (), чтобы получить кортеж со значениями:

>>> hsv = QColor.fromHsv(7,78,92,255)
>>> hsv.getRgb()
(92, 67, 64, 255)

Вы заметите, что значения отличаются от ожидаемых, это потому, что шестнадцатеричный цвет # eb4034 не аналогично HSV (7, 78, 92).

>>> hsv.name()
'#5c4340'
>>> QColor('#eb4034').getHsv()
(3, 199, 235, 255)

Убедитесь, что вы используете правильные значения HSV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...