在Python中将HSV转换为RGB

时间:2018-10-14 20:16:15

标签: python rgb hsv

    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)

但是现在我收到错误消息:

color_rgb中的文件“ D:\ Python \ graphics.py”,行962     返回“#%02x%02x%02x”%(r,g,b) TypeError:%x格式:必须为整数,不能为浮点数

1 个答案:

答案 0 :(得分:1)

RGB在这里是3元组,但是您不能将此元组传递给color_rgb:此方法需要三个参数。但是,您可以在三个参数中解包元组,例如,在星号(*前面):

pt.setFill(color_rgb(*RGB))

或者您可以首先将元组解压缩为三个变量:

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

但是请注意,如果将v参数设置为0,由于HSV基本上是圆锥形,因此这将总是返回(0, 0, 0),因为HSV基本上是圆锥形,而{{ 1}}参数确定从“顶部”到“表面”的距离,如以下Wikipedia image [wiki]所示:

enter image description here

因此,对于v,无论v=0 ue和h饱和度的值如何,总会导致 black