PIL库之Image基础操作快速上手

PIL库基本操作快速入门

PIL(pillow)——python的图像处理库

1.如何读入一张图片?

PIL(python Imaging Library,python图像处理库)提供了图像处理功能,包括图像的缩放、采集、选择、读入、写入等,其中最重要的模块为Image。

接下来我们了解一下,PIL是如何通过Image模块读入图片的:

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('../img/leshan.jpg')
print(type(img))
<class 'PIL.JpegImagePlugin.JpegImageFile'>

可以看到通过Image的open函数可以将图片读入成一个PIL的对象,类似于numpy中的array。

那进一步,我们都知道灰度图片是比较简单好处理的,如果需要转换成灰度图,可以使用这个对象的convert方法。

img=img.convert('L')
# 一般来说我们常用的mode有RGB、L这两种

这里顺带提一下3通道的RGB图是如何通过convert转换成一通道的灰度图的,同官方函数文档的公式:

When translating a color image to greyscale (mode “L”),
the library uses the ITU-R 601-2 luma transform::

        L = R * 299/1000 + G * 587/1000 + B * 114/1000

意思就是说当将彩色图转换成灰度图的时候会使用这个ITU-R 601-2转换:将三个通道像素值矩阵分别进行对应的数值伸缩变化然后叠加在一起。

2.如何保存一张图片?

值得一提的是Image的save函数不仅仅可以用于保存PIL对象为一定格式图片,并且会自动识别存储名来使用对应的图片存储格式。

如果对应的PIL对象保存时不满足对应格式,则会提示相应错误。

# 将我们的灰度图保存起来
img.save('../img/leshan_grey.jpg')
img.close()

额。。。咱们乐山大佛周围景色的这张图片貌似本身就比较灰。。。换一张图片吧!

img2=Image.open('../img/crisis2.jpg').convert('L')
img2.save("../img/crisis2_grey.jpg")
plt.imshow(img2)
img2.close()

在这里插入图片描述

当然你不想用Image自带的show功能也可以使用pyplot的imshow(兼容PIL对象)

3.生成缩略图

所谓的缩略图,其实就是将图片进行了内容上的缩小、压缩便于存储,内容与原图没有区别。

img3=Image.open('../img/crisis2.jpg')
img3.thumbnail((128,128))   # 输入指定像素值
# 图像进行了压缩
plt.imshow(img3)
img3.close()

在这里插入图片描述

4.复制和粘贴图像区域

这个功能就有一点PS的感觉了,那么既然要复制一个区域,那么我就得先确定一个边界框(bounding box)——有点像目标检测哈。

我们就用这个box去框出纳米装甲的面甲。

img3=Image.open('../img/crisis2.jpg')
plt.imshow(img3)
# 大概是x[1000(左):1600(右)],y[300(上):900(下)]
box=(1000,300,1600,900)
# Tips:box规矩是以图片左上角为(0,0),box=(左,上,右,下)的操作
area=img3.crop(box)
plt.subplot(1,2,1)
plt.imshow(area)
plt.subplot(1,2,2)
plt.imshow(img3)
<matplotlib.image.AxesImage at 0x272ddd4efd0>

在这里插入图片描述

可以看到复制并不是剪切哦,没有让咱们的孤岛危机2主角“分头行动”哦。但是我们可以让它的头来一个180度选择,也就是图像的翻转,需要用到rotate这个关键词。

area=area.transpose(Image.ROTATE_180)
# transpose有点torchvision里面的compose的感觉,把一个操作函数作为参数输入
img3.paste(area,box)
plt.imshow(img3)
<matplotlib.image.AxesImage at 0x272dddd1a00>

在这里插入图片描述

额,只能说想笑但是笑不出来。。。。=-=只希望后面他不要开着隐身来刀我(滑稽.jpg)

5.尺寸(分辨率)调整和旋转

好了,既然刚刚以及提到了图片旋转和伸缩,那我们就直接来。

img3=img3.resize((128,128))
plt.subplot(1,2,1)
plt.imshow(img3)
img3=img3.rotate(90)    # 输入单位为度
plt.subplot(1,2,2)
plt.imshow(img3)
img3.close()

在这里插入图片描述

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PILPython Imaging Library)是一个用于处理图像的Python。在PIL中,Image模块提供了一个Image类,用于表示和操作图像。Image类表示图像的二维像素数组。 Image模块中的open()函数可以打开一个图像文件,并返回一个Image对象。Image对象有许多方法,可以用于对图像进行各种操作,例如缩放、旋转、裁剪、转换格式等等。 在PIL中,一个图像通常表示为一个PIL.Image.Image类型的对象。这个对象包含了图像的各种信息,例如图像大小、色彩模式、像素数组等等。你可以使用PIL中的各种方法和函数来操作这个对象,并对图像进行各种处理。 ### 回答2: PIL.Image.Image类型是Python Imaging Library(PIL)中表示图像的主要数据类型。它是一个抽象类,被用作各种图像处理操作基础PIL.Image.Image类型是通过打开图像文件或者创建空白图像来创建的。它可以是不同格式的图像,比如JPEG、PNG、BMP等。使用PIL中的open函数可以直接打开图像文件,得到的对象就是PIL.Image.Image类型。我们也可以使用PIL提供的Image.new()方法来创建具有指定大小和模式(如RGB、L、RGBA等)的空白图像。 PIL.Image.Image类型具有一系列方法用于对图像进行处理。例如,可以使用resize()方法调整图像的大小,使用crop()方法裁剪图像的指定部分,使用rotate()方法旋转图像等。此外,还可以使用getpixel()和putpixel()方法来获取和修改图像的像素值。 PIL.Image.Image类型还支持图像的保存和显示。可以使用save()方法将图像保存到文件中,也可以使用show()方法直接显示图像在屏幕上。 需要注意的是,PIL.Image.Image类型是不可变的,即不能直接修改图像的像素值,因此大多数图像处理操作都是通过创建新的图像对象来实现的。 综上所述,PIL.Image.Image类型是Python Imaging Library中用于表示图像的主要数据类型,它提供了各种方法用于图像处理操作,以及保存和显示图像。 ### 回答3: PIL.Image.ImagePython Imaging Library(PIL)图像类的基类,它是所有图像类型的超类。它提供了一些通用的方法和属性,可以应用于所有继承自它的具体图像类。 PIL.Image.Image对象可以表示各种类型的图像,例如位图、灰度图、彩色图等。它具有访问和修改像素值的能力,可以对图像进行缩放、旋转、裁剪和调整大小等操作。此外,它还可以保存图像到文件或打开文件中的图像。 PIL.Image.Image对象具有一些常用的方法,比如crop()用于裁剪图像,resize()用于调整图像大小,rotate()用于旋转图像等。它还可以通过getpixel()和putpixel()方法来获取和设置像素值。除此之外,该对象还提供了一些用于获取图像信息的属性,如size表示图像的尺寸,mode表示图像的模式(如"RGB"、"L"等)。 要使用PIL.Image.Image对象,首先需要导入PIL并创建一个图像对象。可以通过open()函数打开图像文件,也可以通过new()函数创建一个空的图像对象。然后,就可以对图像对象进行各种操作,如修改像素值、调整尺寸、保存图像等。 总之,PIL.Image.ImagePIL中用于表示图像的基类,它提供了一系列的方法和属性,可以方便地对图像进行处理和操作。通过它,可以实现图像的读取、修改、保存等功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值