📜  PythonPillow-向图像添加滤镜(1)

📅  最后修改于: 2023-12-03 15:04:19.908000             🧑  作者: Mango

PythonPillow-向图像添加滤镜

Python Pillow是Python中最流行的图像处理库之一。在本文中,我们将探讨如何使用Python Pillow给图片添加不同类型的滤镜。我们将使用Python 3和Python Pillow 7.1.2版本。让我们开始吧!

安装Python Pillow

首先,我们需要在我们的系统上安装Python Pillow库。你可以使用以下命令来安装Python Pillow:

pip install pillow
加载图像

在这个例子中,我们将使用一张图片来展示如何向图像添加滤镜。你可以在这个 链接 下载这张图片。将图片保存在你的项目文件夹中。那么,我们可以使用以下代码来加载这张图片:

from PIL import Image

image = Image.open("lena.png")
添加滤镜

现在,我们已经加载了图片,让我们探索如何添加滤镜。 Python Pillow库提供了许多内置的滤镜函数(函数文档在此):

  • 像素化
  • 模糊
  • 浮雕
  • 边缘增强
  • 边缘检测
  • 水平翻转
  • 垂直翻转
  • 色调增强

对于此示例,我们将使用以下滤镜:

  • 模糊滤镜
  • 高斯模糊滤镜
  • 水平翻转滤镜
  • 竖直翻转滤镜
  • 边缘检测滤镜
模糊滤镜

模糊滤镜是一种模糊图像的方法。模糊图像的效果更柔和,使它更难识别。我们将使用 Pillow 库中的 blur 函数来实现模糊效果。以下是一个实现的代码示例:

from PIL import ImageFilter

blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.save("blurred.png")

这将创建一个新的图像,其中像素已被模糊处理。保存的图像将命名为 “blurred.png”。

高斯模糊滤镜

高斯滤镜与模糊滤镜类似,但会产生更柔和的效果。带有高斯分布的卷积核用于模糊图像中的每个像素。以下是高斯模糊滤镜的实现代码:

blurred_image = image.filter(ImageFilter.GaussianBlur(radius=10))
blurred_image.save("gaussian_blurred.png")

这应该会创建一个新的图像,其中像素被柔化,产生了更加柔和的效果。保存的图像将命名为 “gaussian_blurred.png”。

水平翻转滤镜

水平翻转滤镜可以将图像水平翻转。以下是水平翻转滤镜的实现代码:

flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)
flipped_image.save("flipped.png")

这将创建一个新的图像,其中像素已经水平翻转,保存的图像将命名为 “flipped.png”。

竖直翻转滤镜

竖直翻转滤镜可以将图像竖直翻转。以下是竖直翻转滤镜的实现代码:

flipped_image = image.transpose(Image.FLIP_TOP_BOTTOM)
flipped_image.save("flipped.png")

这将创建一个新的图像,其中像素已经竖直翻转,保存的图像将命名为 “flipped.png”。

边缘检测滤镜

边缘检测滤镜可用于检查图像中的边缘并将其强调。以下是边缘检测滤镜的实现代码:

from PIL import ImageFilter

edged_image = image.filter(ImageFilter.FIND_EDGES)
edged_image.save("edged.png")

这将创建一个新的图像,其中像素已经用霓虹灯的边缘强调,保存的图像将命名为 “edged.png”。

运行程序

现在,我们已经看到了不同类型的滤镜,接下来我们将在单个程序中运行它们。将以下代码保存为 Python 脚本并运行它:

from PIL import Image, ImageFilter

# Open image
image = Image.open("lena.png")

# Apply different filters
blurred_image = image.filter(ImageFilter.BLUR)
gaussian_blurred_image = image.filter(ImageFilter.GaussianBlur(radius=5))
flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)
edged_image = image.filter(ImageFilter.FIND_EDGES)

# Save the new images
blurred_image.save("blurred.png")
gaussian_blurred_image.save("gaussian_blurred.png")
flipped_image.save("flipped.png")
edged_image.save("edged.png")

程序将打开 “lena.png” 作为原始图像,然后将不同类型的滤镜应用到该图像中。在应用每种滤镜后,该滤镜将保存到一个新的图像文件中,以便比较原始图像和新图像的效果。

在此示例中,我们已经看到了如何使用 Python Pillow 给图像添加不同类型的滤镜。这是使用 Python 处理图像时非常有用的示例。使用下面的代码片段,你可以尝试使用 Python Pillow 库添加其他类型的滤镜。