没有合适的资源?快使用搜索试试~ 我知道了~
python图像处理库PIL介绍.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 44 浏览量
2021-11-06
00:44:53
上传
评论
收藏 2.63MB PDF 举报
温馨提示
试读
38页
python图像处理库PIL介绍.pdf
资源推荐
资源详情
资源评论
python 图像处理库 PIL 介绍
1. 简介。
图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会
错过这一门盛宴。 PIL (Python Imaging Library )是 Python 中最常用的图像处理库,目前版
本为 1.1.7,我们可以 在这里 下载学习和查找资料。
Image 类是 PIL 库中一个非常重要的类,通过这个类来创建实例可以有直接载入图像文
件,读取处理过的图像和通过抓取的方法得到的图像这三种方法。
2. 使用。
导入 Image 模块。然后通过 Image 类中的 open 方法即可载入一个图像文件。如果载
入文件失败, 则会引起一个 IOError ;若无返回错误, 则 open 函数返回一个 Image 对象。
现在,我们可以通过一些对象属性来检查文件内容,即:
1 >>> import Image 2 >>> im = Image.open("j.jpg") 3 >>> print im.format, im.size, im.mode 4
JPEG (440, 330) RGB
这里有三个属性,我们逐一了解。
format : 识别图像的源格式,如果该文件不是从文件中读取的,则被置为 None 值。
size : 返回的一个元组,有两个元素,其值为象素意义上的宽和高。
mode : RGB(true color image ),此外还有, L(luminance ),CMTK( pre-press image)。
现在, 我们可以使用一些在 Image 类中定义的方法来操作已读取的图像实例。 比如, 显
示最新载入的图像:
1 >>>im.show() 2 >>>
输出原图:
3. 函数概貌。
3.1 Reading and Writing Images : open( infilename ) , save( outfilename )
3.2 Cutting and Pasting and Merging Images :
crop() : 从图像中提取出某个矩形大小的图像。 它接收一个四元素的元组作为参数,
各元素为( left, upper, right, lower ),坐标系统的原点( 0, 0)是左上角。
paste() :
merge() :
1 >>> box = (100, 100, 200, 200) 2 >>> region = im.crop(box) 3 >>> region.show() 4 >>>
region = region.transpose(Image.ROTATE_180) 5 >>> region.show() 6 >>> im.paste(region, box)
7 >>> im.show()
其效果图为:
旋转一幅图片:
1 def roll(image, delta): 2 "Roll an image sideways" 3 4 xsize,
ysize = image.size 5 6 delta = delta % xsize 7 if delta == 0: return
image 8 9 part1 = image.crop((0, 0, delta, ysize)) 10 part2 =
image.crop((delta, 0, xsize, ysize)) 11 image.paste(part2, (0, 0,
xsize-delta, ysize)) 12 image.paste(part1, (xsize-delta, 0, xsize,
ysize)) 13 14 return image
3.3 几何变换。
3.3.1 简单的几何变换。
1 >>>out = im.resize((128, 128)) # 2 >>>out = im.rotate(45) # 逆时针
旋转 45 度角。 3 >>>out = im.transpose(Image.FLIP_LEFT_RIGHT) #左右
对换。 4 >>>out = im.transpose(Image.FLIP_TOP_BOTTOM) #上下对换。
5 >>>out = im.transpose(Image.ROTATE_90) #旋转 90 度角。 6 >>>out =
im.transpose(Image.ROTATE_180) #旋转 180 度角。 7 >>>out =
im.transpose(Image.ROTATE_270) #旋转 270 度角。
各个调整之后的图像为:
图片 1:
图片 2:
图片 3:
图片 4:
3.3.2 色彩空间变换。
convert() : 该函数可以用来将图像转换为不同色彩模式。
3.3.3 图像增强。
Filters : 在 ImageFilter 模块中可以使用 filter 函数来使用模块中一系列预定义的增强滤镜。
1 >>> import ImageFilter 2 >>> imfilter = im.filter(ImageFilter.DETAIL)
3 >>> imfilter.show()
3.4 序列图像。
即我们常见到的动态图,最常见的后缀为 .gif ,另外还有 FLI / FLC 。PIL 库对这种动画格式
图也提供了一些基本的支持。当我们打开这类图像文件时, PIL 自动载入图像的第一帧。 我们可以使
用 seek 和 tell 方法在各帧之间移动。
1 import Image 2 im.seek(1) # skip to the second frame 3 4 try : 5 while
1: 6 im.seek( im.tell() + 1) 7 # do something to im 8 except EOFError:
9 pass
3.5 更多关于图像文件的读取。
最基本的方式: im = Image.open("filename")
类文件读取: fp = open("filename", "rb"); im = Image.open(fp)
字符串数据读取: import StringIO; im = Image.open(StringIO.StringIO(buffer))
从归档文件读取: import TarIO; fp = TarIo.TarIO("Image.tar", "Image/test/lena.ppm");
im = Image.open(fp)
基本的 PIL 目前就练习到这里。其他函数的功能可点击 这里 进一步阅读。
关于 PIL 库的一些概念
pil 能处理的图片类型
pil 可以处理光栅图片 (像素数据组成的的块 )。
通道
一个图片可以包含一到多个数据通道,如果这些通道具有相同的维数和深度, Pil 允许将这
些通道进行叠加
模式
1
1 位像素,黑和白,存成 8 位的
像素
L
8 位像素,黑白
P
8 位像素,使用调色板映射到任
何其他模式
RGB
3 ×8 位像素,真彩
RGBA
4×8 位像素,真彩 +透明通道
CMYK
4×8 位像素,颜色隔离
YCbCr
3×8 位像素,彩色视频格式
I
32 位整型像素
F 32 位浮点型像素
尺寸
通过图片对象的 size 属性可以得到图片的尺寸,结果这是一个二元组,包含水平和垂直方
向上的像素数。
剩余37页未读,继续阅读
资源评论
BlueWatergg
- 粉丝: 3
- 资源: 11万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功