附加:pillow库

Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。

1)图像模块(Image.Image)

1. 使用 Image 类

PIL最重要的类是 Image class, 你可以通过多种方法创建这个类的实例;你可以从文件加载图像,或者处理其他图像, 或者从 scratch 创建。

要从文件加载图像,可以使用open( )函数,在Image模块中:


from PIL import Image
im = Image.open("E:/photoshop/1.jpg")

加载成功后,将返回一个Image对象,可以通过使用示例属性查看文件内容:

print(im.format, im.size, im.mode)
('JPEG', (600, 351), 'RGB')

format 这个属性标识了图像来源。如果图像不是从文件读取它的值就是None。size属性是一个二元tuple,包含width和height(宽度和高度,单位都是px)。 mode 属性定义了图像bands的数量和名称,以及像素类型和深度。常见的modes 有 “L” (luminance) 表示灰度图像, “RGB” 表示真彩色图像, and “CMYK” 表示出版图像。
如果文件打开错误,返回 IOError 错误。

只要你有了 Image 类的实例,你就可以通过类的方法处理图像。

2. Image类的功能:

  • Image.new(mode,size,color):使用给定的模式、大小和颜色创建新图像;大小以(宽度,高度)2 元组的形式给出,以像素为单位;颜色以单波段图像的单个值和多波段图像的元组(每个波段的一个值)给出,可以使用颜色名如‘red’也可以受用16进制#FF0000或者使用数字表示(255,0,0)
  • Image.open(file,mode):读取图像文件头,mode只能是‘r’
  • Image.blend(image1,image2,alpha):通过使用常量alpha在给定图像之间进行差值来创建新图像,两个图像必须具有相同的大小和模式,aplha为0则返回第一张图像的拷贝,为1则返回第二张图像的拷贝,可以去中间值来划分偏差如0.5
  • Image.composite(image1,image2,mask):通过给定的图像之间进行差值,使用mask图像的响应像素作为alpha来创建新图像,mask可以具有的模式‘1’,‘L’,或者‘RGBA’
  • Image.eval(image,function):function为接受一个整数参数的函数,将im的每个像素值分别传给func处理并返回最后的Image对象
  • Image.merge(mode,bands):从多个单通道创建新图像,bands为图像的元组或列表

3. Image模块的方法:

Image类的实例具有以下方法,所有方法都会返回Image类的新实例,并保留生成的图像。

  • im.convert(mode):将图像转换为另一种模式,然后返回新图像

  • im.copy():拷贝图像

  • im.crop(box):从当前图像返回矩形区域的副本,box是一个4元祖,定义从左、上、右、下的像素坐标

  • im.filter(filter):返回由给定过滤器过滤的图像的副本

  • im.getbands():返回包含每个band的名称的元组。例如, RGB图像上的getband返回(“R”,“G”,“B”)

  • im.getbbox():计算图像中非零区域的边界框

  • im.getcolors(maxcolors):返回元祖的末排序列表

  • im.getdata():将图像的内容作为包含像素值的序列对象返回

  • im.getextrema():返回包含图像最小值和最大值的2元组,仅适用于单波段图像

  • im.getpixel(xy):返回给定位置的像素。如果图像是多层图像,则此方法返回元组

  • im.load():映像分配存储并从文件加载它

  • im.point(table):返回图像的副本,其中每个像素已通过给定的查找表进行映射

  • im.resize(size,filter=None):返回图像的已调整大小的副本

  • im.rotate(angle):返回围绕其中心逆时针旋转给定度数的图像副本

  • im.save(outfile,format,options):将图像保存在给定的文件名下

  • im.seek(frame):寻找序列文件中的给定帧

  • im.show():显示图像

  • im.split():返回图像中各个图像带的元组

  • im.tell():返回当前帧编号

  • im.thumbnail(size):修改图像以包含其自身的缩略图版本

  • im.paste(image,box):将另一张图像粘贴到此图像中

  • im.transpose(method):返回图像的翻转或旋转副本

  • im.verify():尝试确定文件是否损坏,而不实际解码图像数据

    对象的属性:

    • im.format:源文件的文件格式
    • im.mode:图像模式典型值为“1”,“L”,“RGB”或“CMYK”
    • im.size:图像大小,以像素为单位。大小以2元组(宽度,高度)给出
    • im.palette:调色板表
    • im.info:保存与图像相关的数据的字典

2)ImageChops模块

ImageChops模块包含多个算术图像的操作,称为通道操作,它们可以实现,特殊效果,图像合成,算法绘画等
它的功能大多数通道操作都是采用一个或两个图像参数比较来返回一个新图像,下面只列出一些常用的方法:
IC.lighter(image1,image2):逐个像素地比较两个图像,并返回包含较亮值的新图像

from PIL import Image
from PIL import ImageChops
im1=Image.open('1.jpg')
im2=Image.open('2.jpg')

IC_image=ImageChops.lighter(im1,im2)
IC_image.show()
  • IC.darker(image1,image2):逐个像素地比较两个图像,并返回包含较暗值的新图像
  • IC.difference(image1,image2):返回两个图像之间差异的绝对值
  • IC.multiply(image1,image2):将两个图像叠加在一起。如果将图像与纯黑色图像相乘,则结果为黑色。如果乘以纯白图像,则图像不受影响
  • IC.screen(image1,image2):将两个倒置的图像叠加在一起
  • IC.add(image1,image2,scle,offset):添加两个图像,按比例划分结果并添加偏移量
  • IC.subtract(image1,image2,scale,offset):减去两个图像,按比例划分结果并添加偏移量

3)ImageColor模块

ImageColor模块用来实现RGB颜色表转换,它支持是颜色格式包括:

  • 十六进制颜色说明符,例如,#ff0000指定纯红色
  • RGB函数,以“rgb(红色,绿色,蓝色)”给出,其中颜色值是0到255范围内的整数,如,“rgb(255,0,0)”和“rgb(100%,0%,0%)
  • 常见的HTML颜色名称,例如,“red”指定纯红色

getrgb(color):将颜色字符串转换为RGB元组

getcolor(color,mode):与getrgb相同,但如果模式不是颜色或调色板图像,则将RGB值转换为灰度值

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