从GIMP,我可以轻松改变色调和饱和度。例如,下面是原始图片和将色调设置为-90并且饱和度为100之后的最终结果。
如何从Python PIL获得相同的结果?
答案 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))
答案 1 :(得分:3)
我建议您将图片转换为numpy数组,然后应用matplotlib rgb_to_hsv函数:http://matplotlib.org/api/colors_api.html#matplotlib.colors.rgb_to_hsv这样就可以避免可能导致像素的双重for循环使用colorsys的逐像素方法很慢。