Python - 将颜色图应用于灰度 numpy 数组并将其转换为图像

Python - Applying a color map to a grayscale numpy array and converting it to an image

我想实现 Photoshop 中可用的渐变映射效果。 There's already a post that explains the desired outcome. Also, this answer 完全涵盖了我想做的事情,但是

im = Image.fromarray(np.uint8(cm.gist_earth(myarray)*255))

对我不起作用,因为我不知道如何将数组标准化为 1.0 的值。

下面是我打算让它工作的代码。

im = Image.open(filename).convert('L') # Opening an Image as Grayscale
im_arr = numpy.asarray(im)             # Converting the image to an Array 

# TODO - Grayscale Color Mapping Operation on im_arr

im = Image.fromarray(im_arr)

任何人都可以指出可能的选项和将颜色映射应用于该数组的理想方法吗?我不想绘制它,因为似乎没有将 pyplot 图转换为图像的简单方法。

此外,您能否指出如何规范化数组,因为我无法这样做并且无法在任何地方找到帮助。

要标准化图像,您可以使用以下过程:

import numpy as np
image = get_some_image() # your source data
image = image.astype(np.float32) # convert to float
image -= image.min() # ensure the minimal value is 0.0
image /= image.max() # maximum value in image is now 1.0

思路是先平移图像,所以最小值为零。这也将处理负最小值。然后将图像除以最大值,因此得到的最大值为 1。