爱python网_Python

一、PIL库简介

1.安装PIL库

PIL库是Python的第三方库,需要手动通过pip工具安装。

可通过cmd命令:pip install pillow  进行安装。(注意:出现pip不是内部处理命令时需要配置一下环境)。

2.PIL库的功能

PIL库支持图像存储、显示和处理,它能够处理几乎所有的图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作。

具体如下:

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

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

二、PIL库使用

3.PIL库Image类解析

(1)Image类的图像读取和创建方法:

Image.open(filename)          根据所给的参数进行加载图片的操作

Image.new(mode,size,color)       根据给定的参数创建一个新的图像

Image.open(StringIO.StringIo(buffer))   从字符串中获取图像

Image.frombytes(mode,size,data)      根据像素点data创建图像

Image.verify()              对图像文件完整性进行检查,返回异常

通过Image打开图像文件时,图像的栅格数据不会直接被解码或者加载,程序只是读取了图像文件头部的元数据信息,这部分信息标识了图像的格式、颜色、大小等。

因此,打开一个文件会十分的迅速,与图像的存储和压缩方式无关。

加载一个图像文件的方法:

(2)Image类的常用属性

Image.dormat      标识图像格式或来源,如果图像不是从文件读取,值为None

Image.mode        图像的色彩模式,“L”为灰度图像,“RGB”为真彩色图像,“CMYK”为出版图像

Image.size        图像的宽度和高度,单位是像素(px),返回值是二元元组(tuple)

Image.palette      调色板属性,返回一个ImagePalette类型

查看已读取的图像文件属性:

打印结果为:

拓展:

CMYK色彩是彩色印刷时采用的一套色彩体系,也成印刷四色。印刷中颜色混合原理不一样,其中C是青色,M是红色,Y是黄色以及K是定位套版色(黑色)。

(3)Image类的序列图像操作方法

Image.seek(frame)     跳转并返回图像中的指定帧

Image.tell()         返回当前帧的序号

如:

(4)其他方法:

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

Image.save(filename,format)        将图像保存为filename文件名,format是图片格式

Image.convert(mode)         使用不同的参数,转换图像为新的模式

Image.thumbnail(size)           创建图像的略缩图,size是略缩图尺寸的二元元组

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

Image.resize(size)      按size的大小调整图像,生成副本

Image.rotate(angle)       按angle的角度旋转图像,生成副本

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

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

Image.split()         提取RGB图像的每个颜色通道,返回图像副本

Image.merge(mode,bands)    合并通道,其中mode表示色彩,bands表示色彩的通道

Image.blend(im1,im2,alpha)   将两幅图片im1和im2按照下公式:im1*(1.0-alpha)+im2*alpha   插值后生成新图像

如交换图像中的颜色:

如对图像的每个像素点操作:

(5)拓展

PIL库的ImageFilter和ImageEnhance类提供了过滤图像和增强图像的方法

ImageFilter类的预定义过滤方法:

ImageFilter.BLUR              图像的模糊效果

ImageFilter.CONTOUR              图像的轮廓效果

ImageFilter.DETALE                图像的细节效果

ImageFilter.EDGE_ENHANCE          图像的边界加强效果

ImageFilter.EDGE_ENHANCE_MORE     图像的阈值边界加强效果

ImageFilter.EMBOSS              图像的浮雕效果

ImageFilter.FIND_EDGES            图像的边界效果

ImageFilter.SMOOTH              图像的平滑效果

ImageFilter.SMOOTH_MORE            图像的阈值平滑效果

ImageFilter.SHARPEN             图像的锐化效果

利用Image类的filter()方法可以使用ImageFilter类,方法如下:

Image.filter(ImageFilter.function)  (注:function为BLUR、CONTOUR、DETALE等功能)

如获取图像轮廓:

ImageEnhance类的图像增强和滤镜方法:

ImageEnhance.enhance(factor)         对选择属性的数值增强factor倍

ImageEnhance.Color(im)           调整图像的颜色平衡

ImageEnhance.Contrast(im)            调整图像的对比度

ImageEnhance.Brightness(im)           调整图像的亮度

ImageEnhance.Sharpness(im)         调整图像的锐度

如增强图像的对比度为初始的20倍:

笔记仅用于Python学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python计算互信息_互信息公式及概述

在概率论和信息论中,两个随机变量的互信息(Mutual Information,简称MI)或转移信息(transinformation)是变量间相互依赖性的量度。不同于相关系数,互信息并不局限于实值随机变量,它更加一般且决定着联合分布 p(X,Y) 和分解的边缘分…

队列和消息队列_消息队列概述[幻灯片]

队列和消息队列昨天,我进行了一次演讲,探讨了使用消息队列的所有方面。 我以前曾写过“您可能不需要消息队列” –现在的结论有些细微差别,但我仍然坚持简单性的观点。 演讲探讨了使用消息队列的各种好处和用例,并讨论了典型“消…

反码、原码、补码的观点阐述

我自己是不认可所谓的原码、反码的说法,但是很多人在计算负数的二进制时,都会使用反码和原码的概念,我这里就简单梳理下吧。 十进制2的二进制数(按8位的二进制举例)如下: 原码:0000 0010 补码&…

aspose word 获取标题_Word干货|多级标题的自动编号怎么添加?

在对Word文档进行排版时,大家普遍认为的一个难点就是对多级标题添加自动编号,本期Word妹与大家分享相关技巧的使用。1、添加样式选中文本,点击开始——样式——选择标题1,相同的样式则可以借用F4来实现。PS:以同样方式…

python使用elasticsearch_python中使用ElasticSearch(二)

一、数据库和elasticsearch的对比分析二、kibana中常用的命令。1.新建数据。2.查询上一步中存进去的数据。3.put修改字段(这个操作要小心,容易误操作,清楚其他的字段)4.post修改字段5.查询的基本操作。(1)全部查询(类似于select * from fruit)(2)有条件的…

vue.jsr入门_JSR 365更新:深入CDI 2.0

vue.jsr入门上下文和依赖注入2.0( JSR 365 )是CDI 1.2的更新,CDI 1.2目前是Java EE 7平台的一部分。 目前处于公开审查阶段 。 对于不熟悉CDI的那些人,它定义了一组功能强大的免费服务,这些服务可充当凝胶,…

Java集合类梳理

文章目录集合框架CollectionListList常用方法ArrayListArrayList常用方法LinkedListLinkedList常用方法VectorVector 常用方法StackStack 常用方法SetHashSetHashSet 常用方法LinkedHashSetLinkedHashSet 常用方法TreeSetTreeSet常用方法EnumSetEnumSet 常用方法MapHashMapHash…

增加第三方插件_AE插件排行!!

大家好是万能的懒懒酱After effects为视觉效果艺术家和动画设计师带来了大量的效果。然而,第三方开发人员提供了更多独特插件,供After Effects使用。在这里可以帮助你了解哪些插件是最流行的最受欢迎的。第10名:Looks(多功能调色插…

mysql 连续签到天数_签到功能实现,没有你想的那么复杂(一)

1 签到定义以及作用签到,指在规定的簿册上签名或写一“到”字,表示本人已经到达。在APP中使用此功能,可以增加用户粘性和活跃度.2 技术选型redis为主写入查询,mysql辅助查询. 传统签到多数都是直接采用mysql为存储DB,在大数据的情况下数据库的压力较大.查…

java包装项目_项目包装组织

java包装项目程序包是Java的基本概念,是您开始用该语言编程时偶然发现的第一件事。 作为一个初学者,您可能不太关注软件包的结构,但是随着您成为经验丰富且成熟的软件开发人员,您开始考虑可以采取哪些措施来提高其效率。 有几个主…

如何开发 Servlet 程序

文章目录如何开发 Servlet步骤 1:写一个类步骤 2:编译步骤 3:打包步骤 4:部署步骤 5:启动服务器步骤 6:访问 servletServlet 开发示例不使用 IDE 开发(手动编译和部署)步骤 1&#x…

报任安书文言现象_语文老师精心总结【文言文常考点】够你从初一用到初四!...

点击本号菜单栏 免费获取学习资料▼今天给大家整理了初中文言文的一些常用知识点:特殊句式和古今异义,这些只是文言文学习模块中的一部分,除此之外,其他大家需要在平时积累的文言文知识点有下面这些:文言文高频词、古代…

参数化测试 junit_JUnit 5 –参数化测试

参数化测试 junitJUnit 5令人印象深刻,尤其是当您深入研究扩展模型和体系结构时 。 但是从表面上讲,编写测试的地方,开发的过程比革命的过程更具进化性 – JUnit 4上没有杀手级功能吗? 幸运的是,至少有一个&#xff1a…

devexpress textedit调整文字何文本框的间距_手把手教学:用PPT做效果超赞的文字效果...

本文总计:2391 字预计阅读时间:6 分钟昨天文章的头图,貌似反馈还不错,挺多人比较感兴趣。所以,今天就分享一下,这种文字排版效果,是怎么做出来的。而且今天的实现手法与效果,做了一些…

micropython stm32f030_24C02 读写代码,基于STM32F030

EEPROM可以掉电保存数据,是一种在产品中经常使用的器件,24Cxx 系列更是被广泛采用。下面是的工程在 24LC02 上调试通过,实现了字节读写,和页读写,MCU 是 STM32F030。采用了 MCU 的硬件 I2C 控制器。24LC02硬件连接&…

IntelliJ IDEA for Mac 如何取消双击shift键打开全局搜索弹窗

取消双击shift键打开全局搜索弹窗 按ShiftcmdA,打开如下图的搜索框: 输入Registry搜索后打开如下的窗口: 3. 找到“ide.suppress.double.click.handler”,将后面的复选框勾上,勾选上复选框后直接关闭退出,…

kie-api_7.0上的新KIE持久性API

kie-api这篇文章介绍了即将到来的Drools和jBPM持久性API。 创建持久性api(不绑定到JPA)的动机是因为Drools和jBPM中的持久性直到7.0.0发行版才允许将替代性持久性机制与JPA完全集成。 尽管JPA是一个出色的api,但它与传统RDBMS模型紧密地结合在…

备抵附加账户的期末余额_备抵账户,附加账户和备抵附加账户的区别,分别有哪些会计科目,举例说明...

备抵账户又叫抵减账户,它是作为被调整对象原始数额的抵减项目,以确定被调整对象实有数额而设置的账户。备抵账户按被调整账户的性质和内容,又可分为资产类备抵账户和权益类备抵账户两类。(1)资产类备抵账户①用途:资产…

vb6 判断打印机是否有效_吊打面试官 | 算法之如何判断括号是否有效?

今天要讲的这道题是 bilibili 今年的笔试真题,也是一道关于栈的经典面试题。经过前面文章的学习,我想很多朋友已经看出来了,我接下来要写的是一个关于「算法图解」的系列文章,中间可能会穿插少量的其他类型的文章,但「…

如何理解字符编码

一直有个困惑,为什么计算机系统搞那么多字符编码,就一个Unicode统一天下不就得了,后来看了篇文章,才多少理解一丁点。 英语的国家,只要一个字节就可以表示全部的字符,一个无符合的字节可以表示256个字符&a…