2010-04-10 61 views

回答

13

你尝试使用colorsys库?

的colorsys模块定义了 RGB表示颜色之间 值颜色的 双向转换(红绿蓝)色彩空间用于在计算机显示器 和三个其他 坐标系:YIQ,HLS(色调 明度饱和度)和HSV(色调饱和度 值)

实施例(从上述链接截取):

>>> import colorsys 
>>> colorsys.rgb_to_hsv(.3, .4, .2) 
(0.25, 0.5, 0.4) 
>>> colorsys.hsv_to_rgb(0.25, 0.5, 0.4) 
(0.3, 0.4, 0.2) 
+0

如何将像(220,20,60)这样的整数值转换为float以与colorsys一起使用? – 2010-04-10 05:35:42

+1

@ sree01:256中的小数部分适合你吗?即'val_in_int/float(256)'? – 2010-04-10 05:38:15

+0

感谢您的回复 – 2010-04-12 05:04:38

1

你输入了什么R,G和B值,以及你看到错误的H,S和V的值?

您链接到的代码与colorsys类似,预计值在0.0到1.0之间。如果你用0到255范围内的整数值来调用它,你会得到假结果。如果你给它所期望的输入值,它应该可以正常工作。

(这是一个代码示例,它实际上并没有记录,预计什么样的投入明显失败。)

0

如果使用PIL,与最近枕头的副本,一个应该使用

def rgb2hsv(image): 
    return image.convert('HSV')