【Python】【进阶篇】三、Pillow的图像分离与合并

目录

  • 三、Pillow的图像分离与合并
    • 3.1 图像分离`split()`
    • 3.2 图像合并`merge()`
    • 3.3 图像混合`blend()`

三、Pillow的图像分离与合并

3.1 图像分离split()

图像(指数字图像)由许多像素点组成,像素是组成图像的基本单位,而每一个像素点又可以使用不同的颜色,最终呈现出了绚丽多彩的图像。

Image 类提供了用于分离图像和合并图像的方法 split()merge() 方法

图像分离代码如下 -

from PIL import Image

im = Image.open("./hudie.jpg")
# 修改图像大小,以适应图像处理
image = im.resize((450, 400))
image.save("./hudie2.jpg")
# 分离颜色通道,产生三个 Image对象
r, g, b = image.split()
r.show()
g.show()
b.show()

3.2 图像合并merge()

常用格式 : Image.merge(mode, bands)

  • mode:指定输出图片的模式
  • bands:参数类型为元组或者列表序列,其元素值是组成图像的颜色通道,比如 RGB 分别代表三种颜色通道,可以表示为 (r,g,b)。
from PIL import Image

im = Image.open("./hudie.jpg")
# 修改图像大小,以适应图像处理
image = im.resize((450, 400))
image.save("./hudie2.jpg")
# 分离颜色通道,产生三个 Image对象
r, g, b = image.split()
# 重新组合颜色通道,返回先的Image对象
image_merge = Image.merge('RGB', (b, g, r))
image_merge.show()
# 保存图像至桌面
image_merge.save("./hudie3.jpg")

两张图片的合并操作也并不复杂,但是要求两张图片的模式、图像大小必须要保持一致,否则不能合并。因此,对于那些模式、大小不同的图片要进行预处理。

from PIL import Image

im_1 = Image.open("./python.jpg")
im_2 = Image.open("./hudie.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("./合成.jpg")

3.3 图像混合blend()

Image 类也提供了 blend() 方法来混合 RGBA 模式的图片(PNG 格式)
常用格式 : Image.blend(image1,image2, alpha)

  • image1,image2:表示两个 Image 对象。
  • alpha:表示透明度,取值范围为 0 到 1,当取值为 0 时,输出图像相当于 image1 的拷贝,而取值为 1 时,则是 image2 的拷贝,只有当取值为 0.5 时,才为两个图像的中合。因此改值的大小决定了两个图像的混合程度。
from PIL import Image

im1 = Image.open("./放大图像.png")
image = Image.open("./python.png")
# 修改图像大小,以适应图像处理
im2 = image.resize(im1.size)


# 合并图像
def blend_im(im1, im2):
    # 设置 alpha 为 0.5
    Image.blend(im1, im2, 0.5).save("./合成2.png")


# 调用函数
blend_im(im1, im2)

你可能感兴趣的:(Python,#,Pillow库,python,pillow,计算机视觉)