使用 Pillow 为灰度图像着色

Colourize a grayscale image using Pillow

我有一个使用 Pillow 创建的灰度图像 – 它是模式 L – 我想将它保存为单一颜色的阴影,这样就不是从黑到白的阴影,而是从青色到白色的阴影。

所以,假设我是这样做的:

from PIL import Image, ImageOps

i = Image.open("old_img.jpg")
g = ImageOps.grayscale(i)
g.save("new_img.jpg")

如何将其保存为青色到白色,而不是黑色到白色?我打算对洋红色到白色和黄色到白色的其他灰度图像做类似的事情。

您可以使用 matplotlib.imshow:

from PIL import Image, ImageOps
import matplotlib.pyplot as plt
import numpy as np 

i = Image.open("frog.jpg")
g = ImageOps.grayscale(i)

fig, ax = plt.subplots(1, 1)
ax.imshow(np.array(g), cmap=plt.cm.Blues)
plt.show()

结果:

将您的图像转换为“L”模式(亮度、灰度),然后使用 .colorize() 方法代替 .grayscale() 方法:

from PIL import Image, ImageOps

i = Image.open("old_img.jpg").convert("L")
g = ImageOps.colorize(i, black="cyan", white="white")
g.save("new_img.jpg")

或者只添加命令

g = ImageOps.colorize(g, black="cyan", white="white")

应用 .grayscale(i) 方法后(因为它也将图像转换为“L”模式):

from PIL import Image, ImageOps

i = Image.open("old_img.jpg")
g = ImageOps.grayscale(i)
g = ImageOps.colorize(g, black="yellow", white="white")
g.save("new_img.jpg")

您可以在 .colorize() 方法的 black= 参数中设置其他所需的颜色。