我想根据以下内容将0到1之间的值转换为rgb值:
你会如何在python中做到这一点?
答案 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
(top
和bottom
的值是估算值;衡量图表!)
现在换其他颜色;注意红色图形如何使0线处于比绿色图形更大的颜色值。因此,要使用绿色分量函数获取红色,请在输入值之前从输入值中减去红色和绿色图形之间的水平距离,然后将其输入到函数中以计算绿色值。对于蓝色值,您必须添加一些而不是减去它。