Python图像处理教程(Pillow)5基本图像处理

基本图像处理

Pillow简介

Pillow 是一个用于图像处理的 Python 库。它提供了许多与GIMP或Photoshop等成像应用程序中类似的图像处理功能,但它们是用Python代码而不是用户界面来调用的。这对于自动化图像处理任务或在你自己的应用程序中添加成像功能是非常理想的。

Pillow是一个名为PIL的老式图像库的fork。这意味着它是基于PIL中的原始代码,但随着时间的推移,新的功能和错误修正已经被加入。

PIL本身自2009年以来就没有更新过。Pillow的主要动机是PIL与Python 3不兼容,而且PIL与setuptools不兼容(意味着它不能用pip轻松安装)。此外,PIL还有一些已知的错误没有被修复。

Pillow已经成为PIL的事实上的替代品。Pillow使用PIL的命名空间。你不应该尝试将PIL和Pillow安装在同一个系统上。

安装Pillow

python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow

Pillow的主要特点

  • 打开、保存并在许多不同的图像格式之间转换。
  • 从Python代码中自动执行各种图像处理任务。
  • 从图像中提取元数据、统计数据和其他信息。
  • 与系统功能集成 - 图像查看器、屏幕抓取、打印。
  • 与各种UI系统集成 - Qt, Tk, Windows.
  • 有效地访问像素数据,以实现你自己的图像处理。
  • 在不同的像素表示法之间进行转换--颜色空间,颜色深度,基于调色板的图像。
  • 与NumPy和其他Python库交换数据。
  • 在图像上绘图。
  • 应用色彩管理。
  • 处理图像序列。

创建和显示图像

  • 创建Mandelbrot Set的图像
from PIL import Image

image = Image.effect_mandelbrot((520, 440), (-2, -1.1, 0.6, 1.1), 256)
image.show()

Image.effect_mandelbrot函数有3个参数。

  • size (520, 440)指定520x440像素的图像。
  • extent (-2, -1.1, 0.6, 1.1)意味着图像将在-2 < x < 0.6 和 -1.1 , y , 1.1区域显示曼德布罗特集。这个区域涵盖了分形的主要部分。
  • quality。这设置了算法创建图像时的最大循环次数。对于像这样的小图像,256就可以了。

调用image.show()会使图像在单独的窗口中显示。这主要是为了测试和调试的目的--它为你省去了将图像保存到文件然后在查看器中打开图像的麻烦。

保存图像

from PIL import Image

image = Image.effect_mandelbrot((520, 440), (-2, -1.1, 0.6, 1.1), 256)
image.save('mandelbrot.png')

save方法使用提供的文件名保存图像对象。文件类型是由扩展名控制的。例如,".png "创建PNG文件,或者".jpg "创建JPEG文件。

处理颜色

Pillow支持许多颜色空间,包括:

  • RGB
  • RGBA
  • Grey

将字符串转换为颜色

你可以用字符串来表示颜色。有多种格式,例如。

  • '#FF0080'表示100%红、0%绿、50%蓝的RGB值。
  • 'rgb(100%, 0%, 50%)'也代表100%红、0%绿、50%蓝的RGB值。
  • 'magenta'代表100%红、0%绿、100%蓝的RGB值。

当你把字符串传入需要颜色的Pillow函数时,它将被自动转换为颜色。

Image.new创建图像

from PIL import Image, ImageColor

image = Image.new('RGB', (400, 300), 'gold')
image.show()

new有3个参数。

  • mode - 字符串,决定图像的颜色模型和深度。字符串RGB创建24-bit的RGB图像。我们将在本书的后面介绍其他模式。
  • size - 以像素为单位的图像大小的元组。
  • color - 图像的颜色。

打开图像

from PIL import Image

image = Image.open('boat.jpg')
image.show()

旋转图像

from PIL import Image

image = Image.open('boat.jpg')
rotated = image.rotate(180)
rotated.show()

rotated.save("rotated-boat.png")

rotate方法创建旋转过的新图像。旋转需要1个参数和一些额外的可选参数。

  • angle - 旋转的角度,单位是度。

注意:旋转默认不会改变size,可能会导致部分图片内容丢失。使用expand=True会扩展图片size。transpose(Image.ROTATE_90)和im.rotate(90, expand=True)的效果实际是相同。

更多旋转实例:pillow/rotate.py

命令行旋转工具:tools/rotate.py

opencv的旋转:cv/rotate.py

创建缩略图

from PIL import Image

image = Image.open('boat.jpg')
image.thumbnail((200, 200))
image.show()

image.save("thumbnail-boat.png")

缩略图需要1个参数。

  • size - 给出图像的最大宽度和高度的元组。
    在这种情况下,原始图像是600×400像素。thumbnail将图像缩小到200×200像素--这是能满足所需尺寸的最大图像,但保持原来的宽度和高度比例。

图像模式

在Pillow中,图像模式描述了色彩空间和每个像素的比特数。它由字符串表示。

最常见的模式是

  • 'RGB' - 24位的RGB(每种颜色8位)。
  • 'RGBA' - 32位的RGB加阿尔法(每种颜色8位,阿尔法8位)。
  • 'L'--8位灰度。
  • ''1' - 两级数据(每个像素是全黑或全白)。
  • 'P'--每个像素是一个8位的索引,进入一个调色板,映射到其他的颜色。

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容