RGB to HSV via PIL and colorsys

bolzano picture bolzano · Mar 6, 2014 · Viewed 20.7k times · Source

I have written a function which converts an Image from RGB > HSV. However, when I save the new image the only thing I get is a black image. What should I fix to get it solved?

Any help is kindly appreciated!

My code:

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

Answer

K3---rnc picture K3---rnc · May 20, 2015

Just FYI, with a recent copy of Pillow, one should probably use

def rgb2hsv(image):
    return image.convert('HSV')