我想根据以下内容将 0 到 1 之间的值转换为 rgb 值:
你会如何在 python 中做到这一点?
试试colorsys模块。将 HSB 转换为 Hue 作为变量,Saturation 和 Brightness 都为 1.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 线的颜色值大于绿色图表。因此,要使用绿色分量函数来获得红色,请从输入值中减去红色和绿色图形之间的水平距离,然后再将其输入函数以计算绿色值。对于蓝色值,您必须添加而不是减去它。
搜索 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]