Pillow图像处理类库—(1)Image的基本操作

Pillow(老版本叫PIL,如今被Pillow替代)是一个图像处理库,其最重要的模块就是Image模块,安装pillow,只需要使用命令

pip install Pillow

一、读取一幅图像.open()

可以使用

from PIL import Image
im = Image.open(r'C:\Users\Administrator\Desktop\picture\sucai.jpg')
im.show()

这里对于新手强调一下,在python3中对于文件路径的表达,如果直接

im = Image.open('C:\Users\Administrator\Desktop\picture\sucai.jpg')

系统会报错:SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position
这是因为在window操作系统中“\”表示的是读取路径意思,但是在python字符串中\有转义的含义,如\t可代表TAB,\n代表换行,所以我们需要采取一些方式使得\不被解读为转义字符:

  1. 在路径前面加r,即保持字符原始值的意思。
    im = Image.open(r'C:\Users\Administrator\Desktop\picture\sucai.jpg')

  2. 替换为双反斜杠。
    im = Image.open('C:\\Users\\Administrator\\Desktop\\picture\\sucai.jpg')

  3. 替换为正斜杠。
    im = Image.open('C:/Users/Administrator/Desktop/picture/sucai.jpg')

二、图像的颜色变换.convert()

要读取一幅图像,并将其转换成灰度图像,只需要加上.convert(‘L’)例如:

from PIL import Image
im = Image.open('C:/Users/Administrator/Desktop/picture/sucai.jpg').convert('L')
im.show()

三、存储图像(可用来改变图像的格式)

使用在 Image 模块的 open() 函数从磁盘读取文件。你不需要知道文件格式就能打开它,这个库能够根据文件内容自动确定文件格式。要保存文件,使用 Image 类的 save() 方法。保存文件的时候文件名变得重要了。除非你指定格式,否则这个库将会以文件名的扩展名作为格式保存。

  1. 图像列表的获取。例如一个file文件夹,里面有非常多的.jpg及其他格式的文件,在图像处理中,我们经常会遇到要读取文件夹中所有图片的操作,这时,我们想要获得的是带有路径的图片文件名,接下来就记录一下如何得到存放所有图片文件名的列表。首先在project下建立一个新的文件模块,命名为imtools.py,添加函数:
import os


def get_imlist(path):
    """返回目录中所有jpg图像的文件名列表"""
    return [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.jpg')]

然后返回自己需要调用列表的主程序:

import imtools
file = imtools.get_imlist(r'C:\Users\Administrator\Desktop\python\file')

此时变量file中就是一个包含所有图片的列表,后续操作可以针对file操作:

from PIL import Image
import os
import imtools
file = imtools.get_imlist(r'C:\Users\Administrator\Desktop\python\file')
for infile in file:
    outfile = os.path.splitext(infile)[0]+ '.jpg'
    if infile != outfile:
        try:
            Image.open(infile).save(outfile)
        except IOError:
            print("can't convert")

遍历file列表,将所有图像文件的文件名和文件格式拆开,将所有文件名拿出来单独加上.jpg的后缀,此时就形成了一个新的列表,后面判断语句,如果文件名.jpg与原来的不同(说明原来不是.jpg文件),则try以下操作:打开该infile然后.save()成outfile,如果报错则说明不能转换格式。
其中关于os.path.splitext(“文件路径”) 作用是分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作 f,e = os.path.splitext(infile),将文件名给f,后缀给e。

四、创建缩略图.thumbnail()

from PIL import Image
im = Image.open(r'C:\Users\Administrator\Desktop\picture\sucai.jpg')
im.thumbnail((400,400))#生成缩略图并保存在im中
im.save('C:/Users/Administrator/Desktop/picture/sucai.jpg')#保存.save(‘path')

五、复制和粘贴图像区域.crop()和.paste()

裁剪操作

box = (100,100,300,300)#上下左右四个像素位置,确定框框
region = im.crop(box)#裁剪出来赋给region
region.show()

可以旋转上面代码中获取的区域,然后使用paste()方法将该区域放回去:

region = region.transpose(Image.ROTATE_180)
im.paste(region, box)

六、调整尺寸和旋转.resize()和.rotate()

out = im.resize((128,128))
out = im.rotate(45)#逆时针方向旋转  

七、图像滤波与图像增强

图像滤波在ImageFilter 模块中;图像增强也是图像预处理中的一个基本技术,Pillow中的图像增强函数主要在ImageEnhance模块下,通过该模块可以调节图像的颜色、对比度和饱和度和锐化等
关于图像滤波与增强部分

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值