Python图像处理模块pillow子模块Image用法精要

Image是pillow库中一个非常重要的模块,提供了大量用于图像处理的方法。使用该模块时,首先需要导入。
>>> from PIL import Image
接下来,我们通过几个示例来简单演示一下这个模块的用法。
(1)打开图像文件
>>> im = Image.open('sample.jpg')
(2)显示图像
>>> im.show()
(3)查看图像信息
>>> im.format  #查看图像格式
'JPEG'
>>> im.size  #查看图像大小,格式为(宽度, 高度)
(200, 100)
>>> im.height #查看图像高度
100
>>> im.width  #查看图像宽度
200
(4)查看图像直方图
>>> im.histogram() #如果图像包含多个通道,则返回所有通道的直方图
>>> im.histogram()[:256] #查看第一个通道的直方图
(5)读取像素值
>>> im.getpixel((150, 80)) #参数必须是元组,两个元素分别表示x和y坐标
(255, 248, 220) #返回值分别表示红、绿、蓝三原色分量的值
(6)设置像素值,通过读取和修改图像像素值可以实现图像点运算
>>> im.putpixel((100,50), (128,30,120))  #第二个参数用来指定目标像素的颜色值
小提示:在使用时应注意图像文件的格式,这里演示的是24位颜色深度的图像,如果是256色的图像文件,那么getpixel()的返回值只是一个数字,而putpixel()的第二个参数也只需要一个数字就可以了。
(7)保存图像文件
>>> im.save('sample1.jpg')  #可以把图像保存为另一个文件
>>> im.save('sample.bmp')    #通过该方法也可以进行格式转换
>>> def img2jpg(imgFile):   #转换图像文件格式
     if type(imgFile)==str and imgFile.endswith(('.bmp', '.gif', '.png')):
          with Image.open(imgFile) as im:
              im.convert('RGB').save(imgFile[:-3]+'jpg')   
>>> img2jpg('1.gif')
>>> img2jpg('1.bmp')
>>> img2jpg('1.png')
(8)图像缩放
>>> im = im.resize((100,100))  #参数表示图像的新尺寸,分别表示宽度和高度
(9)旋转图像,rotate()方法支持任意角度的旋转,而transpose()方法支持部分特殊角度的旋转,如90、180、270度旋转以及水平、垂直翻转等等。
>>> im = im.rotate(90)   #逆时针旋转90度
>>> im = im.transpose(Image.ROTATE_180)  #逆时针旋转180度
>>> im = im.transpose(Image.FLIP_LEFT_RIGHT)   #水平翻转
>>> im = im.transpose(Image.FLIP_TOP_BOTTOM)  #垂直翻转
(10)图像裁剪与粘贴
>>> box = (120, 194, 220, 294)  #定义裁剪区域
>>> region = im.crop(box)  #裁剪
>>> region = region.transpose(Image.ROTATE_180)
>>> im.paste(region,box)  #粘贴
(11)图像通道分离与合并
>>> r, g, b = im.split()  #将彩色图像分离为同样大小的红、绿、蓝三分量子图
>>> imNew = Image.merge(im.mode, (r,g,b))
(12)创建缩略图
>>> im.thumbnail((50, 20)) #参数为缩略图尺寸
>>> im.save('2.jpg')  #保存缩略图
(13)屏幕截图
>>> from PIL import ImageGrab
>>> im = ImageGrab.grab((0,0,800,200)) #截取屏幕指定区域的图像
>>> im = ImageGrab.grab()   #不带参数表示全屏幕截图
(14)图像增强
>>> from PIL import ImageFilter
>>> im = im.filter(ImageFilter.DETAIL)   #创建滤波器,使用不同的卷积核
>>> im = im.filter(ImageFilter.EDGE_ENHANCE) #边缘增强
>>> im = im.filter(ImageFilter.EDGE_ENHANCE_MORE)  #边缘增强
(15)图像模糊
>>> im = im.filter(ImageFilter.BLUR)
>>> im = im.filter(ImageFilter.GaussianBlur)  #高斯模糊
>>> im.filter(ImageFilter.MedianFilter) #中值滤波
(16)图像边缘提取
>>> im = im.filter(ImageFilter.FIND_EDGES)
(17)图像点运算
>>> im = im.point(lambda i:i*1.3)  #整体变亮
>>> im = im.point(lambda i:i*0.7)  #整体变暗
>>> im = im.point(lambda i: i*1.8 if i<100 else i*0.7) #自定义调整图像明暗度
也使用图像增强模块来实现上面类似的功能,例如
>>> from PIL import ImageEnhance
>>> enh = ImageEnhance.Brightness(im)
>>> enh.enhance(1.3).show()
(18)图像冷暖色调整
>>> r, g, b = im.split()   #分离图像
>>> r = r.point(lambda i:i*1.3)  #红色分量变为原来的1.3倍
>>> g = g.point(lambda i:i*0.9) #绿色分量变为原来的0.9
>>> b = b.point(lambda i:0) #把蓝色分量变为0
>>> im = Image.merge(im.mode,(r,g,b)) #合并图像
>>> im.show()
(19)图像对比度增强
>>> from PIL import ImageEnhance
>>> im = ImageEnhance.Contrast(im)
>>> im = im.enhance(1.3) #对比度增强为原来的1.3倍

本文内容节选自《Python可以这样学》(董付国著,清华大学出版社,已出版,预计2017.2.1上架)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dongfuguo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值