Pillow教程03:图像处理的基本步骤+分离split+合并merge+混合blend+composite遮罩

本文主要是介绍Pillow教程03:图像处理的基本步骤+分离split+合并merge+混合blend+composite遮罩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

--------------Pillow教程集合---------------

Python项目18:使用Pillow模块,随机生成4位数的图片验证码

Python教程93:初识Pillow模块(创建Image对象+查看属性+图片的保存与缩放)

Pillow教程02:图片的裁剪+复制粘贴+旋转角度+翻转+降噪滤镜(平滑、锐化、边缘检测)

Pillow教程03:图像处理的基本步骤+分离split+合并merge+混合blend+composite遮罩

Pillow教程04:学习Draw绘制+Font字体+alpha composite方法,给图片添加文字水印

Pillow教程05:NumPy数组和PIL图像的相互转化

1.Pillow处理图像的基本步骤

环境准备:安装Pillow库。这通常通过在终端执行pip install pillow命令来完成。导入必要的模块和类,例如Image类,这是Pillow模块中最重要的类之一。
打开和加载图像:使用Image.open()方法打开图像文件。加载图像到内存中,准备进行后续处理。
图像预处理:根据需要,对图像进行裁剪、缩放、旋转、翻转等操作。应用滤镜效果,如模糊、锐化等,以改善图像质量或实现特定视觉效果。
颜色空间转换与图像增强:如果需要,将图像从一种颜色空间转换到另一种(例如,从RGB转换到灰度)。应用图像增强技术,如对比度增强、亮度调整等,以突出图像中的特定特征或改善整体视觉效果。
图像分割与合并:使用Image.split()方法将图像拆分为不同的颜色通道或图层。使用Image.merge()方法将多个单波段图像或图层合并成一个新的多波段图像或完整图像。
图像混合与透明度调整:使用Image.blend()方法混合两张图像,通过调整alpha值来控制图像的混合程度。
保存和处理结果:对处理后的图像进行保存,可以使用Image.save()方法将图像保存到文件。根据需要,对处理结果进行进一步的分析、显示或传输。
这些步骤并不是固定的,具体的处理流程取决于你的图像处理需求和目标。Pillow库提供了丰富的功能和灵活的API,可以根据具体的应用场景来选择合适的处理方法和步骤。

2.image.split()方法:用于将图像分割为多个通道列表。对于RGB图像,会创建三个新的图像对象。每个对象都包含原始图像的一个颜色通道(红色、绿色、蓝色)的副本,你可以对这些通道进行进一步的处理或分析。语法格式如下:

r, g, b = image.split()

3.Image.merge()方法:用于将多个图像(通常是颜色通道)合并成一个新的图像。它需要两个参数:一个模式字符串(如’RGB’)和一个包含要合并的图像的元组。

分割+合并示例用法1:一张RGB图像的三个单独通道(红、绿、蓝)
在这里插入图片描述

# -*- coding: utf-8 -*-
# @Author : 小红牛
# 微信公众号:WdPython
from PIL import Image
import matplotlib.pyplot as plt# 1.打开图像
img = Image.open('刘亦菲.png')
# 处理图片:裁剪、旋转、翻转、滤镜# 2.将图像拆分为RGB通道
r, g, b = img.split()# 3.合并通道
merged_image = Image.merge('RGB', (g, b, r))# 2.创建5个子图的图形
plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文显示
plt.rcParams['axes.unicode_minus'] = False  # 解决符号无法显示
fig, axs = plt.subplots(nrows=1, ncols=5, figsize=(10, 3))# 在第一个子图上,显示第1张图片
axs[0].imshow(img)
axs[0].set_title('原图')
axs[0].axis('off')# 第2张图
axs[1].imshow(r)
axs[1].set_title('r图')
axs[1].axis('off')# 第3张图
axs[2].imshow(g)
axs[2].set_title('g图')
axs[2].axis('off')# 第4张图
axs[3].imshow(b)
axs[3].set_title('b图')
axs[3].axis('off')# 第5张图
axs[4].imshow(merged_image)
axs[4].set_title('merged方法,合并的图')
axs[4].axis('off')
# 4.显示图形
plt.show()

分割+合并示例用法2:多个图层或效果叠加的图像
在这里插入图片描述

from PIL import Image# 1.打开图1和图2
image1 = Image.open('刘亦菲.png')
image2 = Image.open('白鹿.png')
# 2.因为两种图片的图片格式一致,所以仅需要处理图片的大小,让它们保持一致
# 让 image2 的图像尺寸与 image1 一致,注意此处新生成了 Image 对象
resized_image = image2.resize(image1.size)
# 3.接下来,对图像进行颜色分离操作
r1, g1, b1 = image1.split()
r2, g2, b2 = resized_image.split()
# 4.合并图像
image3 = Image.merge('RGB', [r2, g1, b2])
image3.save('new_image.png')

4.Image.blend():用于将两个图像混合在一起,根据指定的alpha值来决定每个图像在混合结果中的贡献程度。alpha值范围从0(完全第一个图像)到1(完全第二个图像),当取值=0.5时,为两个图像的中合,因此该值的大小决定了两个图像的混合程度。

Image.blend(image1,image2, alpha)

在这里插入图片描述

# @Author : 小红牛
# 微信公众号:WdPython
from PIL import Image# 1.打开两张图像
image1 = Image.open('刘亦菲.png')
image2 = Image.open('白鹿.png')# 2.确保两张图像大小相同
resized_image = image2.resize(image1.size)
# 混合两张图像,alpha值为0.5(各占一半)
blended_image = Image.blend(resized_image, image1, 0.5)
# 3.保存处理后的图片
blended_image.save('new_image2.png')

5.Image.composite,用于将两张图片通过透明蒙版,进行遮罩混合处理,创建出一张新的合成图像。PIL.Image.composite(image1, image2, mask)。

image1 是第一张图片,通常作为背景。
image2 是第二张图片,通常作为前景,需要被放置在 image1 上。
mask是一个遮罩图像,它决定了 image2 在合成图像中的哪些部分应该是可见的,哪些部分应该是透明的。遮罩图像可以具有模式“1”,“L”或“RGBA”,并且必须与其他两个图像具有相同的大小。

准备两张图片素材
在这里插入图片描述
在这里插入图片描述
合成后的效果
在这里插入图片描述


from PIL import Image# 1.打开背景图片和前景图片
image1 = Image.open('花园.png')
image2 = Image.open('猫女.png')# 2.确保前景图片与背景图片大小一致
image1 = image1.resize(image2.size)
r, g, b = image1.split()# 使用 Image.composite 方法合成图片  
# 3.这将根据遮罩图像(mask)将前景图片(foreground)合成到背景图片(background)上
composited = Image.composite(image2, image1, mask=r)# 4.如果需要,可以将合成后的图片保存为文件
composited.save('composited.png')

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame 图像处理

这篇关于Pillow教程03:图像处理的基本步骤+分离split+合并merge+混合blend+composite遮罩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/847539

相关文章

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

mysql重置root密码的完整步骤(适用于5.7和8.0)

《mysql重置root密码的完整步骤(适用于5.7和8.0)》:本文主要介绍mysql重置root密码的完整步骤,文中描述了如何停止MySQL服务、以管理员身份打开命令行、替换配置文件路径、修改... 目录第一步:先停止mysql服务,一定要停止!方式一:通过命令行关闭mysql服务方式二:通过服务项关闭

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择