从二维角度数组创建彩色编码图像

1 投票
1 回答
844 浏览
提问于 2025-04-18 14:11

我正在尝试用Python写一些代码,把角度和某些颜色联系起来。简单来说,我有一个二维数组,里面全是角度。我通过循环其他数组进行计算,得到了每个像素的ha_deg。

ha_array[i,j] = ha_deg

接下来,我想把这些角度变成一幅有颜色渐变的图像。比如说,如果0度是红色,180度是绿色,360度是蓝色,我就可以逐个像素地为每个角度分配一个颜色。抱歉这个问题有点开放,我其实不太确定该怎么继续进行,希望能得到一些指导!谢谢!

1 个回答

1

这里有一种方法可以做到这一点。下面是一个通用的函数,用于生成两个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))

撰写回答