python PIL:改变色调和饱和度

时间:2014-07-21 21:06:34

标签: python image-processing python-imaging-library pillow hue

从GIMP,我可以轻松改变色调和饱和度。例如,下面是原始图片和将色调设置为-90并且饱和度为100之后的最终结果。

如何从Python PIL获得相同的结果?

原始图片

original picture

最终影片

final picture

2 个答案:

答案 0 :(得分:3)

您可以将colorsys模块和PIL组合使用,但速度有点慢。 colorsys允许您将色彩空间更改为HSV,以便进行色调和饱和度修改。我将饱和度调整到0.65的幂来逼近你的例子,它保留colorsys所需的0.0-1.0范围,同时增加中间值。

import colorsys
from PIL import Image
im = Image.open(filename)
ld = im.load()
width, height = im.size
for y in range(height):
    for x in range(width):
        r,g,b = ld[x,y]
        h,s,v = colorsys.rgb_to_hsv(r/255., g/255., b/255.)
        h = (h + -90.0/360.0) % 1.0
        s = s**0.65
        r,g,b = colorsys.hsv_to_rgb(h, s, v)
        ld[x,y] = (int(r * 255.9999), int(g * 255.9999), int(b * 255.9999))

enter image description here

答案 1 :(得分:3)

我建议您将图片转换为numpy数组,然后应用matplotlib rgb_to_hsv函数:http://matplotlib.org/api/colors_api.html#matplotlib.colors.rgb_to_hsv这样就可以避免可能导致像素的双重for循环使用colorsys的逐像素方法很慢。