通过PIL和colorsys将RGB转换为HSV [英] RGB to HSV via PIL and colorsys
本文介绍了通过PIL和colorsys将RGB转换为HSV的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我写了一个函数,可以从RGB> HSV转换图像.但是,当我保存新图像时,唯一得到的就是黑色图像.我应该解决什么才能解决它?
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!
我的代码:
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
推荐答案
您是否将模块Image
和其类Image
混合使用?
Didn't you mix the module Image
and its class Image
?
以下代码对我有用(更改isinstance(img,Image.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')
这篇关于通过PIL和colorsys将RGB转换为HSV的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文