bolzano
bolzano

Reputation: 836

RGB to HSV via PIL and colorsys

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

Upvotes: 5

Views: 33805

Answers (3)

fredtantini
fredtantini

Reputation: 16556

Didn't you mix the module Image and its class Image?

The following code works for me (change the isinstance(img,Image.Image) part):

import Image, colorsys    

def HSVColor(img):
    if isinstance(img,Image.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(s*255.))
            Vdat.append(int(v*255.))
        r.putdata(Hdat)
        g.putdata(Sdat)
        b.putdata(Vdat)
        return Image.merge('RGB',(r,g,b))
    else:
        return None

a = Image.open('/tmp/a.jpg')
b = HSVColor(a)
b.save('/tmp/b.jpg')

Upvotes: 2

K3---rnc
K3---rnc

Reputation: 7050

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

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

Upvotes: 28

Tony Cronin
Tony Cronin

Reputation: 1661

i think you are trying to do the impossible, although you can transform rgb to hsv colour (and vice versa) values, according to wikipedia jpg images can only be stored in rgb or cmyk models.

Upvotes: 4

Related Questions