如何使用Python更改图像的颜色?

时间:2015-09-15 05:27:26

标签: python

我有一个小灰色图像。我需要创建这个图像的许多彩色副本(黄色,绿色,......)。

我不需要更换单色。我的原始图像包含许多灰色阴影,我需要创建具有多种其他颜色阴影的图像。

如何使用Python做到这一点?

2 个答案:

答案 0 :(得分:8)

我今天在Hacker News上看到了一篇文章,其中展示了如何将图像与基本恒定颜色和affine transform混合。 William Chargin撰写的这篇文章是Making thumbnails fast,关于提高图像处理性能。其中提到的源代码位于affine transforms on PIL images

这是一个演示,其中灰度Lena图像的大小调整为231x231像素。选择此图像是因为它“自1973年以来在图像处理领域广泛使用的标准测试图像”。

from PIL import Image
from transforms import RGBTransform # from source code mentioned above

lena = Image.open("lena.png")
lena = lena.convert('RGB') # ensure image has 3 channels
lena

starting image

red = RGBTransform().mix_with((255, 0, 0),factor=.30).applied_to(lena)    
red

red tinted image

green = RGBTransform().mix_with((0, 255, 0),factor=.30).applied_to(lena)
green

green tinted image

blue = RGBTransform().mix_with((0, 0, 255),factor=.30).applied_to(lena)
blue

blue tinted image

答案 1 :(得分:1)

这可能有点矫枉过正,但您可以轻松使用OpenCV库(python绑定)中的功能来为您的灰度图像着色。

尝试查看这些人的C ++代码:http://answers.opencv.org/question/50781/false-coloring-of-grayscale-image/。类比他们使用的函数可能存在于python库中。

这是推荐的行动方案:

  1. 将图像转换为BGR(opencv约定列出红绿蓝 使用cv2.cvtColor()
  2. 从灰度级开始
  3. 申请 您选择的人工色彩图(cv2.applyColorMap())请参阅: http://docs.opencv.org/modules/contrib/doc/facerec/colormaps.html