pil库的依赖库_学习和应用PIL库

本文详细介绍了Python的PIL库,包括图像处理的基本操作,如读取、创建、旋转和缩放,以及ImageFilter和ImageEnhance类的应用,用于图像过滤和增强。此外,还讲解了如何提取序列图像的每一帧。
摘要由CSDN通过智能技术生成

Python PIL

PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储、显示和处理,能够处理几乎所有格式的图片。

一、PIL库简介

1. PIL库主要有2个方面的功能:

(1) 图像归档:对图像进行批处理、生产图像预览、图像格式转换等。

(2) 图像处理:图像基本处理、像素处理、颜色处理等。

2. PIL拥有多个类,此处就其中的Image类、ImageFilter类、ImageEnhance类做简单介绍。

二、安装库函数

pip install pillow

三、使用库函数Image类 —— 基本图像处理

1. 调用Image类

from PIL import Image

2. Image类关于图像读取与创建

方法

说明

Image.open(filename)

加载图像文件

Image.new(mode,size,color)

根据给定参数创建新图像

Image.open(StringIO.StringIO(buffer))

从字符串中获取图像

Image.frombytes(mode,size,color)

根据像素点创建新图像

Image.verify()

对图像完整性进行检查,返回异常

例子:

from PIL importImage

im=Image.open("D:\\python\\1.jpg")

im.show()

3. Image类的常用属性

方法

说明

Image.format

图像格式或来源,若图像不是从文件读取,返回None

Image.mode

图像的色彩模式,’L’为灰度模式,’RGB’为真彩色图像,’C(青)M(品红)Y(黄)K(黑)’为出版图像

Image.size

图像的宽度和高度,单位是像素(px),返回值为元组类型

Image.palette

调色板属性,返回ImagePalette类型

例子:

from PIL importImage

im=Image.open("D:\\python\\1.jpg")print(im.format,im.size,im.mode)

4.Image类的序列图像操作方法

方法

说明

Image.seek(frame)

跳转并返回图像中的指定帧

Image.tell()

返回当前帧的序号

5.Image类的图像旋转和缩放方法

方法

说明

Image.resize(size)

返回按size大小调整图像的副本

Image.rotate(angle)

返回按angle角度旋转图像的副本

例子:

from PIL importImage

im=Image.open("D:\\python\\1.jpg")#读取图像

print(im.format,im.size,im.mode)#读取图像文件的属性

im.show()

im_resized= im.resize((300, 200)) #原图像缩放为500x400

im_resized.show()

6.Image类的图像转换和保存方法

方法

说明

Image.save(filename,format)

将图像保存为filename文件名,format格式

Image.convert(mode)

将图像转换为mode模式

Image.thumbnail(size)

创建图像的缩略图,size是缩略图尺寸的元组

Example_1:

from PIL import Image

nest = Image.open("D:\\python\\1.jpg")

r,g,b = nest.split() #获取原图的RGB通道的颜色值

newb = b.point(lambda i:i*1.1) #将B通道的颜色值增强

nest1 = Image.merge(nest.mode,(b,g,r))

nest1.save("D:\\python\\1-1.jpg")

原图与效果图对比:

7.Image类的图像像素和通道处理方法

方法

说明

Image.point(func)

根据函数func的功能对每个元素进行运算,返回图像副本

Image.split()

根据GRB图像的每个颜色通道,返回图像副本

Image.merge(mode,bands)

合成通道,其中mode为色彩,bands为新的色彩通道

Image.blend(im1,im2,alpha)

将2张图片im1和im2按照公式插值后生成新图像

公式:im1*(1.0 - alpha) + im2*alpha

四、使用库函数ImageFilter类 —— 图像过滤

1.调用ImageFilter类

from PIL import ImageFilter

2. ImageFilter类预定义图像过滤方法

方法

说明

ImageFilter.BLUR

图像的模糊效果

ImageFilter.CONTOUR

图像的轮廓效果

ImageFilter.DETAIL

图像的细节效果

ImageFilter.EDGE_ENHANCE

图像的边界加强效果

ImageFilter.EDGE_ENHANCE_MORE

图像的阈值边界加强效果

ImageFilter.EMBOSS

图像的浮雕效果

ImageFilter.FIND_EDGES

图像的边界效果

ImageFilter.SMOOTH

图像的平滑效果

ImageFilter.SMOOTH_MORE

图像的阈值平滑效果

ImageFilter.SHARPEN

图像的锐化效果

Example_2:

from PIL import Image

from PIL import ImageFilter

im=Image.open("D:\\python\\10.jpg")#读取图像

om=im.filter(ImageFilter.CONTOUR)

om.save("D:\\python\\10.jpg")

im.show()

效果图:

五、使用库函数ImageEnhance类 —— 图像增强

1. 调用ImageEnhance类

from PIL import ImageEnhance

2.ImageEnhance类图像增强与滤镜方法

方法

说明

ImageEnhance.enhance(factor)

对所选属性的数值增强factor倍

ImageEnhance.Color(im)

调整图像的颜色平衡

ImageEnhance.Contrast(im)

调整图像的对比度

ImageEnhance.Brightness(im)

调整图像的亮度

ImageEnhance.Sharpness(im)

调整图像的锐度

例子:

from PIL importImagefrom PIL importImageEnhance

im=Image.open("D:\\python\\10.jpg")#读取图像

om=ImageEnhance.Contrast(im)

om.enhance(10).save('D:\\python\\10.jpg')

im.show()

六、提取图像每一帧

Image还能读取序列类图像文件,包括  gif /   fli  /  flc  /  tiff 等文件格式。open()方法打开一个图像时自动加载序列中的第一帧,使用seek()和tell()方法在不同帧之间的移动:

//Image类的序列图像操作处理

方法

描述

Image.seek(frame)

跳转并返回图像中的指定帧

Image.tell()

返回当前帧的序列

from PIL importImage

im=Image.open("D:\\python\\可爱.GIF")try:

im.save('picframe{:02}.png'.format(im.tell()))whileTrue:

im.seek(im.tell()+1)

im.save('picframe{:02}.png'.format(im.tell()))except:print("处理异常")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Kivy需要以下依赖: - python >= 3.6 - Cython >= 0.29 - SDL2 >= 2.0.10 - GLEW >= 1.13.0 - GLM >= 0.9.9.5 - freetype >= 2.9.1 - pillow >= 5.3.0 - pygments >= 2.2.0 - docutils >= 0.14 - kivy-deps.glew >= 0.1.12 - kivy-deps.sdl2 >= 0.1.22 如果你想使用Kivy的各种功能,还需要安装其他依赖,如AVBin(音频和视频),pyjnius(Java调用)等。 ### 回答2: Kivy是一个开源的Python,用于创建跨平台的应用程序。它的主要依赖可以总结如下: 1. Cython:Kivy使用Cython将Python代码转化为C代码,提高执行效率。 2. SDL2:多平台的多媒体,用于处理图形、音频和输入等。 3. PILPillow:Python Imaging Library或其分支,提供图像处理功能。 4. GStreamer:流媒体处理,提供音频和视频的播放和处理功能。 5. pygments:代码高亮,用于在Kivy的文本组件中显示代码高亮。 6. pytest:Python的测试框架,用于进行单元测试和持续集成。 7. lxml:用于解析和操作XML文件的,在Kivy中通常用于构建用户界面。 8. vlc:视频播放器,用于在Kivy应用程序中播放视频。 除了上述的主要依赖外,Kivy还有一些其他的依赖,用于处理各种功能和特性,如网络通信、数据访问和图表绘制等。这些依赖的具体使用取决于开发者的需求和应用程序的功能。 ### 回答3: Kivy框架是一个用于构建跨平台应用程序的开源Python,它来自于开源项目PyMT(Python多点触摸)。 Kivy本身是一个独立的,不依赖于其他的Python或软件包。然而,在某些情况下,使用Kivy可能需要其他的依赖。 以下是一些常见的Kivy依赖: 1. Python:Kivy是一个Python,因此要使用Kivy,需要安装Python解释器。 2. SDL2(Simple DirectMedia Layer):SDL2是一个低层次的跨平台多媒体,Kivy使用它来处理音频、图形和输入等方面的底层操作。在安装Kivy之前,需要安装SDL2。 3. Cython:Cython是一个用于将Python代码编译成C语言的工具。Kivy使用Cython来提高性能和访问底层硬件。 4. Pillow:Pillow是一个用于图像处理的Python,Kivy使用它来加载和操作图像。 5. GStreamer:GStreamer是一个多媒体框架,Kivy使用它来处理音频和视频等多媒体内容。在安装Kivy时,可能需要安装GStreamer。 以上是一些常见的Kivy依赖,不同的操作系统和开发环境可能会有一些额外的依赖要求。在安装Kivy之前,建议查看Kivy官方文档,以确保满足所有的依赖要求,并正确地安装和配置它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值