值为rgb值

时间:2012-04-22 15:44:33

标签: python

我想根据以下内容将0到1之间的值转换为rgb值:

enter image description here

你会如何在python中做到这一点?

3 个答案:

答案 0 :(得分:2)

尝试colorsys模块。用Hue转换HSB作为变量,饱和度和亮度都是1.0,应该给出类似的结果。

答案 1 :(得分:0)

搜索python查找表解决方案返回了这个非常有用的示例:
http://www.zovirl.com/2008/11/04/interpolated-lookup-tables-in-python/

您的红色通道LUT的示例可能是:

points = ((.4,.2), (.6,1.), (.9,1.), (1.,.5))
table = InterpolatedArray(points)
print table[.5]

答案 2 :(得分:0)

请注意,三种颜色功能具有保存形状,从外观上看甚至完全相同。因此,您可以通过定义单个函数,然后使用偏移输入调用它来生成R,G和B值。暗示;查看绿色组件的图表。这基本上是域0-0.5中的上升线和域0.5-1中的下降线。外推以找到绿线与color = 0.0相交的点(这是上升线的底部,将是< 0),color = 1.0并且彼此(这是rigins线的顶部,将是< ; 1),并使用它来编程绿色组件的功能。然后将返回值限制在0和1之间。

def component(x):
  '''Function for the green component.'''
  top = 1.5
  bottom = -0.5
  if x < 0.5:
    rv = x/0.5*(top-bottom)+bottom
  else:
    rv = (x-0.5)/0.5*(bottom-top)+top
  if rv > 1.0:
    return 1.0
  if rv < 0.0:
    return 0.0
  return rv

topbottom的值是估算值;衡量图表!)

现在换其他颜色;注意红色图形如何使0线处于比绿色图形更大的颜色值。因此,要使用绿色分量函数获取红色,请在输入值之前从输入值中减去红色和绿色图形之间的水平距离,然后将其输入到函数中以计算绿色值。对于蓝色值,您必须添加一些而不是减去它。