从2D角度阵列创建彩色编码图像

时间:2014-07-22 00:09:49

标签: python

我正在尝试在python中编写一些与某些颜色相关的角度代码。基本上我有一个充满角度的二维数组,我通过其他数组循环执行计算以达到每个像素的ha_deg

ha_array[i,j] = ha_deg

我希望将其变成带有渐变色的图像。所以如果0是红色,180是绿色,360是蓝色,我将能够逐个像素地为每个角度分配颜色。对不起,这是一个开放式的问题,我只是不确定如何继续,可以使用一些指导!谢谢!

1 个答案:

答案 0 :(得分:1)

这是一种方法。下面是用于在两个RGB值之间生成线性RGB色彩梯度的一般函数。通过组合适当长度的颜色渐变,从红色到绿色,从绿色到蓝色,可以制作RGB颜色值列表,可以作为角度值和所需颜色之间的映射:

def generateColorGradient(RGB1, RGB2, n, includeEnd=False):
    dRGB = [float(x2-x1)/(n-1) for x1, x2 in zip(RGB1, RGB2)]
    gradient = [tuple([int(x+k*dx) for x, dx in zip(RGB1, dRGB)]) for k in range(n-1+includeEnd)]
    return gradient

gradient1 = generateColorGradient((255, 0, 0), (0, 255, 0), 181, includeEnd=False)
gradient2 = generateColorGradient((0, 255, 0), (0, 0, 255), 181, includeEnd=True)

gradient = numpy.array(gradient1 + gradient2)

#If `ha_array` is a numpy array, you can simply do this to convert all angles to RGB values:

color_array = gradient[ha_array]

#Then if you're using PIL to make images:

image = Image.fromarray(numpy.uint8(color_array))