Pillow图像分离与并
Image 类提供了用于分离图像和并图像的方法 split() 和 merge() 方法,通常情况下,这两个方一起使用。
split()
split() 的使用方法比较简单,用来分离颜色通道。我们使用它来处理蝴蝶图片:
图1:pilow 图像处理操作
代码如下所示:
输出的结果,依次展示如下:im=Image.open("C:/Users/Administrator/Desktop/1.jpg")
#修改图像大小,以适应图像处理
image=im.resize((450,400))
image.save("C:/Users/Administrator/Desktop/2.jpg")
#分离颜色通道,产生三个 Image对象
r,g,b = image.split()
r.show()
g.show()
b.show()

图2:分离结果预览
merge()
Image 类提供的 merge() 方法可以实现图像的并操作。注意,图像并,可以是单个图像并,也可以并两个以上的图像。merge() 方法的语法格式如下:
参数说明如下:Image.merge(mode, bands)
mode:指定输出图片的模式
bands:参数类型为元组或者列表序列,其元素值是组成图像的颜色通道,比如 RGB 分别代表三种颜色通道,可以表示为 (r,g,b)。
注意,该函数会返回一个新的 Image 对象。
下面对图像并的两种类型分别进行介绍:
一. 单个图像的并指的是将颜色通道进行重新组,从而得到不一样的图片效果,代码如下所示:
from PIL import Image
im=Image.open("C:/Users/Administrator/Desktop/1.jpg")
#修改图像大小,以适应图像处理
image=im.resize((450,400))
image.save("C:/Users/Administrator/Desktop/2.jpg")
#分离颜色通道,产生三个 Image对象
r,g,b = image.split()
#重新组颜色通道,返回先的Image对象
image_merge=Image.merge('RGB',(b,g,r))
image_merge.show()
#保存图像桌面
image_merge.save("C:/Users/Administrator/Desktop/3.jpg")
新成的图像入如下所示:

图3:图像并操作
两张图片的并操作也并不复杂,但是要求两张图片的模式、图像大小必须要保持一致,否则不能并。因此,对于那些模式、大小不同的图片要进行预处理。
下面我们将蝴蝶图与向日葵图进行并,向日葵原图如下:

图4:向日葵原图
示例代码如下:
预览图像的成结果:from PIL import Image
#打开图2.jpg
im_1 = Image.open("C:/Users/Administrator/Desktop/2.jpg")
im_2= Image.open("C:/Users/Administrator/Desktop/向日葵.jpg")
#因为两种图片的图片格式一致,所以仅需要处理图片的大小,让它们保持一致
#让 im_2 的图像尺寸与 im_1 一致,注意此处成了 Image 对象
image = im_2.resize(im_1.size)
#接下来,对图像进行颜色分离操作
r1, g1 ,b1 = im_1.split()
r2, g2 , b2 = image.split()
# 并图像
im_3 = Image.merge('RGB',[r2,g1,b2])
im_3.show()
im_3.save("C:/Users/Administrator/Desktop/成.jpg")

图5:成图像
扩展知识:blend() 混图片
Image 类也提供了 blend() 方法来混 RGBA 模式的图片(PNG 格式),函数的语法格式如下:
Image.blend(image1,image2, alpha)
参数说明如下:
image1,image2:表示两个 Image 对象。
alpha:表示透明度,取值范围为 0 到 1,当取值为 0 时,输出图像相当于 image1 的拷贝,而取值为 1 时,则是 image2 的拷贝,只有当取值为 0.5 时,才为两个图像的中。因此改值的大小决定了两个图像的混程度。
与 RGB 模式相比,RGBA 在 RGB 的基础上增加了透明度,通过 Alpha 取值来决定两个图像的混程度。示例如下:
""""
混 rgba模式的图像
"""
im1 = Image.open("C:/Users/Administrator/Desktop/c-net.png")
image = Image.open("C:/Users/Administrator/Desktop/心形函数图像.png")
im2=image.resize(im1.size)
def blend_im(im1,im2):
#设置 alpha 为 0.5
Image.blend(im1,im2,0.5).save("C:/Users/Administrator/Desktop/C语言中文网.png")
#调用函数
blend_im(im1,im2)
输出结果如下:

图6:混图像
- 随机文章
- 核心危机(核心危机魔石合成攻略)
- 风儿(风儿轻轻的吹)
- 饿了么红包怎么用(饿了么红包怎么用微信支付)
- 抖音卡(抖音卡顿怎么解决)
- 兵马俑(兵马俑介绍和历史背景)
- 陈武简历
- 帆船比赛(帆船比赛视频)
- 韩国媳妇和小雪(韩国媳妇和小雪的父亲工资是多少)
- 地球日主题(2020年世界地球日主题)
- 和柳亚子(和柳亚子先生于田)
- 冰客(冰客果汁)
- yy魔兽(yy魔兽世界)
- 国外成人游戏(国外成人游戏注册需要visa信用卡)
- 充值卡代理(充值卡代理加盟)
- 拆奶罩
- 郭妮小说(恶魔的法则郭妮小说)
- 东天目山(东天目山景区)
- 杭同(杭同培训中心怎么样)
- 大松电饭煲(美的大松电饭煲)
- 服饰加盟(服饰加盟店招商)
- 疯狂填字(疯狂填字5)
- 点对点短信息(点对点短信息费是什么意思)
- 观音普门品(观音普门品念诵全文)
- 河北省大运会(河北省大运会时间)
- 哈利波特官网(哈利波特官网在哪里)
- 骇客神条(骇客神条怎么辨别真假)
- 杜星霖(杜星霖图片)
- 广州晓港公园(广州晓港公园正门图片)
- 钢筋等级符号(钢筋等级符号电脑怎么输入)
- 常州天宁寺(常州天宁寺求什么灵验)
