Преобразование HSV в RGB в Python - PullRequest
0 голосов
/ 14 октября 2018
    pt = Point(x,y) 
    h=angle
    s=length
    RGB=colorsys.hsv_to_rgb(h, s, 0)
    print (RGB)
    pt.setFill(color_rgb(RGB))
    pt.draw(win)

Я получаю сообщение об ошибке: "color_rgb () отсутствует 2 обязательных позиционных аргумента: 'g' и 'b'", но если я печатаю RGB, я получаю: "(-0.0, -0.0, 0)", поэтомуесть три.

Я внес исправления ниже:

    pt = Point(x,y) 
    h=angle
    s=length
    print (h,s)
    RGB=colorsys.hsv_to_rgb(h, s, h + s)
    pt.setFill(color_rgb(*RGB))
    pt.draw(win)

Но теперь я получаю сообщение об ошибке:

Файл "D: \ Python \ graphics.py", строка962, в color_rgb возвращают "#% 02x% 02x% 02x"% (r, g, b) Ошибка типа:% x формат: требуется целое число, а не число с плавающей запятой

1 Ответ

0 голосов
/ 14 октября 2018

RGB здесь 3-кортеж, но вы не можете передать этот кортеж на color_rgb: этот метод требует трех параметров.Однако вы можете распаковать кортеж с тремя параметрами, например, перед звездочкой (*):

pt.setFill(color_rgb(<b>*</b>RGB))

, или вы можете сначала распаковать кортеж с тремя переменными:

<b>r, g, b</b> = RGB
pt.setFill(color_rgb(r, g, b))

Обратите внимание, однако, что если для параметра v установлено значение 0, то всегда будет возвращать (0, 0, 0), поскольку HSV является в основном конусом, а параметр vопределяет расстояние от "вершины" до "поверхности", как показано на изображении Википедии [wiki] ниже:

enter image description here

То есть при v=0 это всегда будет чёрным , независимо от значения для h ue и s aturation.

...