今天学习一段转换色彩空间(RGB->HLS)的代码,我觉得这段代码比较能学习到很多新的东西,刚好最近在写一些关于图像处理的Python的代码,就把写的一段分享一下。
import glob,os filelist = glob.glob('./*.jpg') + glob.glob('./*.bmp') #导入当前文件夹中的所有jpg或bmp格式图片 #也可以用filelist = os.listdir('./'),但是这里我们只希望获取某些类型的文件,glob显得智能很多 #convert rgb to hsv color space def rgb2hls(img): r,g,b = img.split() #分离三个通道 Hdat = [] Ldat = [] Sdat = [] for rd,gn,bl in zip(r.getdata(),g.getdata(),b.getdata()): #zip为内建函数,每个for取出一个像素的rgb值 h,l,s = colorsys.rgb_to_hls(rd/255.,gn/255.,bl/255.) Hdat.append(int(h*255.)) Ldat.append(int(l*255.)) Sdat.append(int(s*255.)) r.putdata(Hdat) #将List放入Image对象 g.putdata(Ldat) b.putdata(Sdat) newimg = Image.merge('RGB',(r,g,b)) #合并三个通道 return [r, g, b]</pre> if __name__ == '__main__': color = ['h','l','s'] for i in filelist: img = Image.open(i) img_hls = rgb2hls(img) for c in range(len(color)): temp = img_hls[c] new_img = Image.new('L',tuple(temp.size)) #创建大小为temp.size的Image对象,通道数为1,‘L'表示灰度;'RGBA'表示四通道。 new_img.paste(temp,(1,1)) #将图片粘贴在这个 new_img.save(i[:-4]+'_'+color[c]+'.bmp')
用Python实现图像的处理,除了安装python外,还需要安装PIL库来支持图像的处理。安装方法见http://blog.csdn.net/leon_founder/article/details/2031161。有了PIL,我们就可以import Image了。我强烈建议各位安装cygwin64来运行python,相比用window cmd方便的多。 从上我们应该可以了解到 Image是如何读取照片,获取三个通道,并将List并入到一个Image中的。