现在的位置: 首页 > 综合 > 正文

Python学习笔记-色彩空间转换

2014年09月05日 ⁄ 综合 ⁄ 共 1158字 ⁄ 字号 评论关闭

今天学习一段转换色彩空间(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中的。

抱歉!评论已关闭.