-3

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

在此处输入图像描述

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

4

3 回答 3

2

试试colorsys模块。将 HSB 转换为 Hue 作为变量,Saturation 和 Brightness 都为 1.0 应该会得到类似的结果。

于 2012-04-22T15:53:28.087 回答
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 线的颜色值大于绿色图表。因此,要使用绿色分量函数来获得红色,请从输入值中减去红色和绿色图形之间的水平距离,然后再将其输入函数以计算绿色值。对于蓝色值,您必须添加而不是减去它。

于 2012-04-22T16:41:32.547 回答
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]
于 2012-04-22T16:30:24.137 回答