我知道这与我发布的previous question非常相似,我无法弄清楚如何修改它以适应这个问题。
我有一个0到1之间的值数组。我想将这些值转换为RGB颜色数组,范围从红色(0)到蓝色(1)。上一个问题中建议的解决方案首先将值转换为HSV元组,然后使用colosys.hsv_to_rgb()
转换为RGB值。
如果我想在红色和绿色之间生成颜色,这很好。我可以线性插值色调值。但是,当极端颜色为红色和蓝色时,中间值呈现绿色,因为绿色色调位于红色和蓝色之间。有没有办法可以避免这种情况,只能在红色和蓝色附近获得颜色?
我知道我可以直接线性插值RGB值,但这并不能提供良好的色谱。所以请告诉我一个使用HSV空间的解决方案。
答案 0 :(得分:4)
将您的0-1输入缩放为0 - ( - 120)输出,将模数乘以360,并将其用作您的色调(或0 - ( - 0.3333 ...)和1.0)。
答案 1 :(得分:3)
Hue是一个循环值,因此,如果您将总色调范围添加到任何颜色的色调(以其最大值为模,使其仍在该范围内),您将获得完全相同的颜色。因此,不要将其从红色增加到蓝色,而是将其从红色降低到蓝色。 HSV是圆柱形颜色模型。