Python RGB 和HSV颜色相互转换,pythonhsv,Python RGB 和


Python RGB 和HSV颜色相互转换

import mathdef hsv2rgb(h, s, v):    h = float(h)    s = float(s)    v = float(v)    h60 = h / 60.0    h60f = math.floor(h60)    hi = int(h60f) % 6    f = h60 - h60f    p = v * (1 - s)    q = v * (1 - f * s)    t = v * (1 - (1 - f) * s)    r, g, b = 0, 0, 0    if hi == 0: r, g, b = v, t, p    elif hi == 1: r, g, b = q, v, p    elif hi == 2: r, g, b = p, v, t    elif hi == 3: r, g, b = p, q, v    elif hi == 4: r, g, b = t, p, v    elif hi == 5: r, g, b = v, p, q    r, g, b = int(r * 255), int(g * 255), int(b * 255)    return r, g, bdef rgb2hsv(r, g, b):    r, g, b = r/255.0, g/255.0, b/255.0    mx = max(r, g, b)    mn = min(r, g, b)    df = mx-mn    if mx == mn:        h = 0    elif mx == r:        h = (60 * ((g-b)/df) + 360) % 360    elif mx == g:        h = (60 * ((b-r)/df) + 120) % 360    elif mx == b:        h = (60 * ((r-g)/df) + 240) % 360    if mx == 0:        s = 0    else:        s = df/mx    v = mx    return h, s, v

R, G, B是 [0, 255]. H 是[0, 360]. S, V 是 [0, 1].


背景知识:

RGB大家都很熟悉,是红,绿,蓝三色的值。

HSV是什么呢?HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。  HSV颜色空间模型色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;饱和度S:取值范围为0.0~1.0;亮度V:取值范围为0.0(黑色)~1.0(白色)。RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的。HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。

评论关闭