pillow学习5

ImageEnhance 模块
内置的 ImageEnhance 模块中包含了多个用于增强图像效果的函数,主要用来调整图像
的色彩、对比度、亮度和清晰度等,感觉上和调整电视机的显示参数一样。
在模块 ImageEnhance 中,所有的图片增强对象都实现一个通用的接口。这个接口只包
含如下一个方法。
方法 enhance()会返回一个增强的 Image 对象,参数 factor 是一个大于 0 的浮点数,1 表
示返回原始图片。
当在 Python 程序中使用模块 ImageEnhance 增强图像效果时,需要首先创建对应的增强
调整器,然后调用调整器输出函数,根据指定的增强系数(小于 1 表示减弱,大于 1 表示增
强,等于 1 表示原图不变)进行调整,最后输出调整后的图像。
在模块 ImageEnhance 中,常用的内置函数如下所示:
(1)ImageEnhance.Color(image ):功能是调整图像色彩平衡,相当于彩色电视机的色彩调整,实现了上边提到的接口的enhance 方法。
(2)ImageEnhance.Contrast(image ):功能是调整图像对比度,相当于彩色电视机的对比度调整。
(3)ImageEnhance.Brightness(image ):功能是调整图像亮度。
(4)ImageEnhance.Sharpness(image ):功能是调整图像清晰度,用于锐化/钝化图片。
锐化操作的 factor 是 0~2 之间的一个浮点数。当 factor=0 时,返回一个模糊的图片对象;当 factor=2 时,返回一个锐化的图片对象;当 factor=1 时,返回原始图片对象。

锐化(Sharpening):
锐化是一种图像处理技术,旨在增强图像中的细节和边缘,使它们看起来更清晰和更突出。
锐化通过增强图像中像素之间的对比度来实现,从而使边缘更加清晰。这通常会使图像看起来更加清晰。
锐化通常用于强调图像中的细节,使图像看起来更加清晰和有视觉冲击力。
钝化(Blurring):
钝化是一种图像处理技术,旨在减少图像中的细节和边缘的清晰度,使其看起来更加模糊或柔和。
钝化通过模糊图像中的像素来实现,从而减少细节和边缘的清晰度。这通常用于柔化图像或减少噪点。
钝化可以用于减轻图像中的噪声、平滑皮肤纹理或创建艺术效果。
因此,锐化和钝化都是常见的图像处理技术,用于改变图像的外观和细节水平。选择使用哪种处理取决于您想要实现的效果以及图像的特定要求
ImageDraw 模块
ImageDraw 模块实现了绘图功能。可以通过创建图片的方式来绘制 2D 图像;还可以在原有的图片上进行绘图,已达到修饰图片或对图片进行注释的目的。
在 ImageDraw 模块绘图时需要首先创建一个 ImageDraw.Draw 对象,并且提供指向文件的参数。然后引用创建的 Draw 对象方法进行绘图。最后保存或直接输出绘制的图像。

drawObject=ImageDraw.Draw(black)

绘制直线
表示以(x1,y1)为起始点,以(x2,y2)为终止点画一条直线。[x1,y1,x2,y2]也可以写为(x1,y1,x2,y2)、[(x1,y1),(x2,y2)]等;fill 用于设置指定线条颜色;width 设置线条的宽度;joint表示一系列线之间的联合类型。它可以是“曲线”。

drawObject.line([x1,y1,x2,y2],fill = None,width = 0,joint = None

绘制圆弧
在左上角坐标为(x1,y1),右下角坐标为(x2,y2)的矩形区域内,满圆 O 内,以 start 为起始角度,以 end 为终止角度,截取圆 O 的一部分圆弧并画出来。如果[x1,y1,x2,y2]区域不是正方形,则在该区域内的最大椭圆中根据角度截取片段。参数 fill 和 width 与 line 方法相
同。

drawObject.arc([x1,y1,x2,y2],start,end,fill = None,width = 0

绘制椭圆

drawObject.ellipse([x1,y1,x2,y2],fill = None,outline = None,width = 0

绘制弦

drawObject.chord([x1,y1,x2,y2],start,end,fill = None,outline = None,width = 0

用法同 arc 类似,用于画圆中从 start 到 end 的弦。fill 表示弦与圆弧之间空间用指定颜色填满,设置为 outline 表示只规定弦线的颜色。
绘制扇形

drawObject.pieslice([x1,y1,x2,y2],start,end,fill = None,outline = None,width = 0

用法同 elipse 类似,用于画起止角度间的扇形区域。fill 表示将扇形区域用指定颜色填
满,设置为 outline 表示只用指定颜色描出区域轮廓。

绘制多边形
drawObject.polygon([x1,y1,x2,y2,…],fill = None,outline = None )
根据坐标画多边形,Python 会根据第一个参量中的(x,y)坐标对,连接出整个图形。
fill 表示将多边形区域用指定颜色填满,outline 只用于设置指定颜色描出区域轮廓。

绘制矩形

drawObject.rectangle([x1,y1,x2,y2],fill = None,outline = None,width = 0

在指定的区域内画一个矩形,(x1,y1)表示矩形左上角的坐标,(x2,y2)表示矩形右
下角的坐标。fill 用于将矩形区域颜色填满,outline 用于描出区域轮廓。
绘制矩形

drawObject.rectangle([x1,y1,x2,y2],fill = None,outline = None,width = 0

在指定的区域内画一个矩形,(x1,y1)表示矩形左上角的坐标,(x2,y2)表示矩形右
下角的坐标。fill 用于将矩形区域颜色填满,outline 用于描出区域轮廓。
绘制文字

drawObject.text(position,text,fill = None,font = None,anchor = None,spacing = 0,
align =“left”,direction = None,features = None,language = None

在图像内添加文字。其中参数 position 是一个二元组,用于指定文字左上角的坐标;text
表示要写入的文字内容;fill 表示文本的颜色;font 必须为 ImageFont 中指定的 font 类型;
spacing 表示行之间的像素数;align 表示位置“left”,“center”或“right”;direction 表示文字的方向。它可以是’rtl’(从右到左),‘ltr’(从左到右)或’ttb’(从上到下)。

from PIL import Image, ImageDraw
img = Image.open("lena.jpg")
draw = ImageDraw.Draw(img)
width, height = img.size
draw.arc( (0, 0, width-1, height-1), 0, 360, fill='blue')
img.save("circle.jpg")

ImageFont 模块
ImageFont 的功能是实现对字体和字型的处理。比较常用的内置函数如下所示:
(1)load():从指定的文件中加载一种字体,该函数返回对应的字体对象。如果该函数运行
失败,那么将产生 IOError 异常。语法格式如下:

ImageFont.load(文件名)

(2)load_path():和函数 load()一样,但是如果没有指定当前路径,就会从文件 sys.path 开
始查找指定的字体文件。语法格式如下:

ImageFont.load_path(文件名)

(3)truetype():有两种定义格式。第 1 种格式的功能是加载一个 TrueType 或者 OpenType
字体文件,并且创建一个字体对象。在 Windows 系统中,如果指定的文件不存在,加载器就会顺便看看 Windows 的字体目录下它是否存在。语法格式如下:

ImageFont.truetype(file,size)

第 2 种格式的功能是,加载一个 TrueType 或者 OpenType 字体文件,并且创建一个字体对象。通常的编码方式是“unic”(Unicode)、“symb”(MicrosoftSymbol)、“ADOB”
(Adobe Standard)、“ADBE”(Adobe Expert)和“armn”(Apple Roman)。语法格式如下:

ImageFont.truetype(file,size,encoding=value)

(4)load_default():功能是加载一种默认的字体。

ImageFont.load_default()

(5)getsize():返回给定文本的宽度和高度,返回值是一个二元组。具体语法格式如下:

ImageFont.getsize()

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

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

相关文章

nginx的配置以及常见命令

Nginx配置与常用命令指南 Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。由于它的稳定性、丰富的功能集、简单的配置文件和低资源消耗,Nginx在全球范围内被广泛使用。在本文中,我们将介绍Nginx的基本配置和一些常…

车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文

系列文章目录 车载网络测试实操源码_使用CAPL脚本解析hex、S19、vbf文件 车载网络测试实操源码_使用CAPL脚本对CAN报文的Counter和CRC进行实时监控 车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文 车载网络测试实操源码_使用CAPL脚本实现安全…

利用神经网络学习语言(四)——深度循环神经网络

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型:从线性回归到通用人工智能》,欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下:regression2chatgpt/ch10_rnn/char_rnn_batch.ipynb 《循环神经网络(RNN&…

【移花接木】OpenCV4.8 For Java 深度学习 实时人脸检测

学习《OpenCV应用开发:入门、进阶与工程化实践》一书,学会本文所有技能就这么简单! 做真正的OpenCV开发者,从入门到入职,一步到位! 前言 我写这篇文章之前,我搜索整个网络文章跟问各种语言大模…

速卖通测评揭秘:如何选择安全的渠道操作

许多商家对测评存在误解,认为只需进行几次测评就能迅速打造爆款。实际上,测评是一个需要计划和持久性的过程,以便让平台检测到产品的受众程度并提高产品的曝光和权重。 在进行测评时,安全是首要考虑的问题。平台可以通过设备、网…

黑马点评1——短信篇(基于session)

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…

如何使用多种算法解决LeetCode第135题——分发糖果问题

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

WPF 的 style 定义 使用 继承 复用

style 样式 如何定义一个 style 样式 <Button Content"样式" Width"100" Height"50"><Button.Style><Style></Style></Button.Style></Button>拥有的属性 targetType “” 针对什么类型生效setter 设置属…

Ubuntu中 petalinux 安装 移植linux --tftp/tftp-hpa服务的方法

Xilinx 文档 PetaLinux 指南&#xff1a;如何创建 PetaLinux 环境 &#xff08;2019.1&#xff09; PetaLinux工具参考指南 PetaLinux安装详解(Xilinx , linux, zynq, zynqMP) petalinux 2020.1安装教程 一、PetaLinux工具和库安装 PetaLinux 工具要求主机系统 /bin/sh 为“b…

18.网络编程

网络编程 又称为Socket编程。 Java中网络编程主要是以Java语言完成信息数据在网络上的传输。 网络 计算机网络&#xff0c;指的是将不同地理位置的多台计算机连接起来&#xff0c;可以实现信息共享和信息传输。 Java是Internet上的语言&#xff0c;提供了对网络应用程序的…

笔记 | 《css权威指南》

网络安全色 URL text-indent line-height & vertical-align 字体 font-weight 400 normal 700 bold background-attachment

SpringBoot项目集成JetCache缓存框架步骤

JetCache是阿里开源的基于java开发的缓存框架&#xff0c;支持多种缓存类型&#xff1a;本地缓存、分布式缓存、多级缓存。能够满足不同业务场景的缓存需求。 1.导入依赖 <!--jetcache缓存 --> <dependency><groupId>com.alicp.jetcache</groupId>&l…

【调试笔记-20240516-Windows-使用VS2019编译edk2(上)】

调试笔记-系列文章目录 调试笔记-20240516-Windows-使用VS2019编译edk2&#xff08;上&#xff09; 文章目录 调试笔记-系列文章目录调试笔记-20240516-Windows-使用VS2019编译edk2&#xff08;上&#xff09; 前言一、安装开发工具1. 安装 VS20192. 安装 Python 3.103. 安装 …

pdf加水印怎么加?3种添加水印方法分享

pdf加水印怎么加&#xff1f;PDF加水印不仅是为了保护文档内容&#xff0c;确保信息的安全性和完整性&#xff0c;更是一种有效的版权保护措施。通过添加水印&#xff0c;您可以在文档中嵌入公司名称、日期、编号等信息&#xff0c;以明确文档的归属权和使用限制。此外&#xf…

小而美:两步完成从源码到应用的极简交付

作者&#xff1a;花三&#xff08;王俊&#xff09; Serverless 应用引擎 SAE 是阿里云推出的一款零代码改造、极简易用、自适应弹性的容器化应用托管平台&#xff0c;面市以来为几万家企业客户提供服务&#xff0c;运行稳定&#xff0c;广受好评。 SAE 的出现解决了众多企业…

Python库之lxml的简介、安装、使用方法详细攻略

Python库之lxml的简介、安装、使用方法详细攻略 简介 lxml是一个用于处理XML和HTML文档的Python库&#xff0c;它提供了简单易用的API来解析和生成这些文档。lxml以其性能和易用性而受到广泛欢迎&#xff0c;特别适合于需要处理大量数据或需要高性能解析的场景。 安装 安装…

运行时异常和编译时异常的区别

Java中的异常被分为两大类&#xff1a;编译时异常和运行时异常。 都是RuntimeException类及其子类异常&#xff0c;如NullPointerException、IndexOutOfBoundsException。这些异常是不检查异常&#xff0c;运行时异常的特点是Java编译器不会检查它&#xff0c;程序中可以选择捕…

纯代码如何实现WordPress搜索包含评论内容?

WordPress自带的搜索默认情况下是不包含评论内容的&#xff0c;不过有些WordPress网站评论内容比较多&#xff0c;而且也比较有用&#xff0c;所以想要让用户在搜索时也能够同时搜索到评论内容&#xff0c;那么应该怎么做呢&#xff1f; 网络上很多教程都是推荐安装SearchWP插…

RK3588 Android13 预安装自己的apk应用及把这个应用设置为默认桌面

1、cp -rf device/rockchip/rk3588/rk3588m_s/preinstall device/rockchip/rk3588/rk3588_t/ 2、给device/rockchip/rk3588/rk3588_t/preinstall/的存放app的文件夹改名为app-imms2&#xff0c;在app-imms2放入app-imms2.apk,编译安卓源码即可&#xff0c; 3、编译完会在out/…

android sp指针的cast

sp<Base> b; sp<Derived> d; b static_cast<Base*>(d.get()); 对于c原生的智能指针&#xff0c;有static_pointer_cast之类的操作方法。可以看cppreference。