Python Pilow 颜色空间转换、图像滤镜应用、像素级操作、图像组合

2024-01-08 10:02:58

在Python的Pillow库中,颜色空间转换、图像滤镜应用和像素级操作是常见的图像处理功能。

下面是一些示例代码来演示这些操作:

颜色空间转换

Pillow允许将图片从一种颜色空间转换为另一种颜色空间,例如将RGB转换为灰度或HSV。

from PIL import Image

# 打开RGB图像
img_rgb = Image.open('example.jpg').convert('RGB')

# 将图像转换为灰度(L)模式
img_gray = img_rgb.convert('L')

# 或者转换到HSV颜色空间
img_hsv = img_rgb.convert('HSV')

图像滤镜应用

Pillow提供了ImageFilter模块,包含了一系列预定义的滤镜效果,如模糊、锐化等。

from PIL import ImageFilter

# 应用模糊滤镜
img_blur = img_rgb.filter(ImageFilter.BLUR)

# 应用锐化滤镜
img_sharp = img_rgb.filter(ImageFilter.SHARPEN)

像素级操作

对于像素级别的操作,可以直接访问每个像素并进行修改。

# 以逐像素的方式遍历图像
for x in range(img_rgb.width):
    for y in range(img_rgb.height):
        # 获取当前像素 RGB 值
        pixel = img_rgb.getpixel((x, y))
        
        # 对像素值进行某种操作,例如反转颜色
        inverted_pixel = [255 - p for p in pixel]

        # 将新的像素值设置回原位置
        img_rgb.putpixel((x, y), tuple(inverted_pixel))

# 保存处理后的图像
img_rgb.save('modified_example.jpg', 'JPEG')

图像组合

两个图像叠加在一起:

from PIL import Image

# 打开两个图像文件
image1 = Image.open('image1.jpg')
image2 = Image.open('image2.png')

# 获取一个图像的尺寸作为新图的尺寸
new_image_size = image1.size  # 假设我们以第一个图像的大小为准

# 创建一个新的空白画布
new_image = Image.new('RGB', new_image_size, (255, 255, 255))  # 白色背景

# 计算要粘贴的位置
paste_position_1 = (0, 0)  # 第一个图像放在左上角
paste_position_2 = (image1.width // 2, image1.height // 2)  # 第二个图像放在中心

# 将图像粘贴到新画布上
new_image.paste(image1, paste_position_1)
new_image.paste(image2, paste_position_2)

# 保存最终的组合图像
new_image.save('combined_image.jpg', 'JPEG')

# 另外,如果需要对图像进行缩放或裁剪以便适应新的布局,可以使用resize或crop方法:
# image2_resized = image2.resize((new_width, new_height))
# 然后将调整后的image2_resized粘贴到合适的位置。

上述代码是基于两个图像直接叠加的例子。实际应用中,您可能还需要根据具体需求调整图像的透明度、旋转角度或其他图像处理操作。同时,若两张图片大小不一致,可能需要预先通过resize()或者按需裁剪(crop())以适应目标位置的尺寸要求。

以上只是基础示例,实际使用时可以根据需求定制更复杂的图像处理逻辑。

文章来源:https://blog.csdn.net/wangyue4/article/details/135377016
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。