相关疑难解决方法(0)

使用Python PIL更改图像色调

使用Python PIL,我正在尝试调整给定图像的色调.

我对图形的术语不太满意,所以我所说的"调整色调"就是做了名为"Hue/saturation"的Photoshop操作:这是统一改变图像的颜色,如下所示:

  • 原版的: 原版的
  • 色调调整为+180(红色): 色调:-180
  • 色调调整为-78(绿色): 色调:-78

仅供参考,Photoshop为此色调设置使用-180到+180的比例(其中-180等于+180),这可能代表HSL色调比例(以0-360度表示).

我正在寻找的是一个函数,给定PIL图像和[0,1]内的浮动色调(或[0,360]内的int,无关紧要),返回图像,其色调被移位如上例所示的色调.

到目前为止我所做的是荒谬的,显然没有给出理想的结果.它只是将原始图像与填充颜色的图层混合了一半.

import Image

im = Image.open('tweeter.png')
layer = Image.new('RGB', im.size, 'red') # "hue" selection is done by choosing a color...
output = Image.blend(im, layer, 0.5)
output.save('output.png', 'PNG')
Run Code Online (Sandbox Code Playgroud)

(请不要笑)结果: output.png

提前致谢!


解决方案:这里更新了unutbu代码,因此它完全符合我的描述.

import Image
import numpy as np
import colorsys

rgb_to_hsv = np.vectorize(colorsys.rgb_to_hsv)
hsv_to_rgb = np.vectorize(colorsys.hsv_to_rgb)

def shift_hue(arr, hout):
    r, g, b, a = np.rollaxis(arr, axis=-1)
    h, s, v = rgb_to_hsv(r, g, b) …
Run Code Online (Sandbox Code Playgroud)

python image python-imaging-library hue

28
推荐指数
2
解决办法
2万
查看次数

通过PIL和colorsys将RGB转换为HSV

我编写了一个从RGB> HSV转换图像的函数.但是,当我保存新图像时,我唯一得到的是黑色图像.我该怎么办才能解决它?

任何帮助都非常感谢!

我的代码:

def HSVColor(img):
    if isinstance(img,Image):
        r,g,b = img.split()
        Hdat = []
        Sdat = []
        Vdat = [] 
        for rd,gn,bl in zip(r.getdata(),g.getdata(),b.getdata()) :
            h,s,v = colorsys.rgb_to_hsv(rd/255.,gn/255.,bl/255.)
            Hdat.append(int(h*255.))
            Sdat.append(int(l*255.))
            Vdat.append(int(s*255.))
        r.putdata(Hdat)
        g.putdata(Sdat)
        b.putdata(Vdat)
        return Image.merge('RGB',(r,g,b))
    else:
        return None
Run Code Online (Sandbox Code Playgroud)

python rgb hsv python-imaging-library

3
推荐指数
2
解决办法
1万
查看次数

标签 统计

python ×2

python-imaging-library ×2

hsv ×1

hue ×1

image ×1

rgb ×1