Python Pillow - 模糊图像



模糊图像是图像处理中的一个基本概念,用于降低图像的细节或锐度。模糊的主要目的是使图像看起来更平滑或不那么锐利。模糊可以通过各种数学运算、卷积核或滤镜来实现。

Python 的 Pillow 库在 ImageFilter 模块中提供了几个标准图像滤镜,通过调用 image.filter() 方法对图像执行不同的模糊操作。在本教程中,我们将了解 ImageFilter 模块提供的不同图像模糊滤镜。

将模糊滤镜应用于图像

模糊图像可以通过使用 ImageFilter.BLUR 滤镜来完成,它是 Pillow 库当前版本中提供的内置滤镜选项之一,用于在图像中创建模糊效果。

以下是应用图像模糊的步骤:

  • 使用 Image.open() 函数加载输入图像。

  • 将 filter() 函数应用于加载的 Image 对象,并向函数提供 ImageFilter.BLUR 作为参数。该函数将返回模糊后的图像,作为 PIL.Image.Image 对象。

以下是本章所有示例中使用的输入图像。

yellow car

示例

以下是使用 Image.filter() 方法和 ImageFilter.BLUR 内核滤镜的示例。

from PIL import Image, ImageFilter

# Open an existing image
original_image = Image.open('Images/car_2.jpg')

# Apply a blur filter to the image
blurred_image = original_image.filter(ImageFilter.BLUR)

# Display the original image 
original_image.show()

# Display the blurred mage
blurred_image.show()

输出图像

blur car

应用 BoxBlur 滤镜

BoxBlur 滤镜用于通过将每个像素的值设置为扩展到每个方向指定像素数的正方形框内像素的平均值来模糊图像。为此,您可以使用 Pillow 的 ImageFilter 模块中的 BoxBlur() 类。

以下是 ImageFilter.BoxBlur() 类的语法:

class PIL.ImageFilter.BoxBlur(radius)

PIL.ImageFilter.BoxBlur() 类接受一个参数:

  • radius - 此参数指定用于在每个方向上模糊的正方形框的大小。可以将其提供为两个数字的序列(用于 x 和 y 方向)或一个应用于两个方向的数字。

如果 radius 设置为 1,则采用 3x3 正方形框内像素值的平均值(每个方向 1 个像素,总共 9 个像素)。radius 值为 0 不会模糊图像,并返回相同的图像。

示例

以下是一个演示如何使用 BoxBlur() 类进行图像模糊的示例。

from PIL import Image, ImageFilter

# Open an existing image
original_image = Image.open('Images/car_2.jpg')

# Apply a Box Blur filter to the image
box_blurred_image = original_image.filter(ImageFilter.BoxBlur(radius=3))

# Display the Box Blurred image
box_blurred_image.show()

输出图像

imagefilter boxblur

将高斯模糊应用于图像

高斯模糊滤镜用于通过应用高斯模糊来模糊图像,高斯模糊是一种近似高斯分布的特定模糊类型。这可以通过使用 Pillow 的 ImageFilter.GaussianBlur() 类来完成。

以下是 ImageFilter.GaussianBlur() 类的语法:

class PIL.ImageFilter.GaussianBlur(radius=2)

ImageFilter.GaussianBlur() 类接受一个参数:

  • radius - 此参数指定高斯核的标准差。标准差控制模糊的程度。您可以将其提供为两个数字的序列(用于 x 和 y 方向)或一个应用于两个方向的数字。

示例

以下是一个演示如何使用 GaussianBlur() 类进行图像模糊的示例。

from PIL import Image, ImageFilter

# Open an existing image
original_image = Image.open('Images/car_2.jpg')

# Apply a Gaussian Blur filter to the image
gaussian_blurred_image = original_image.filter(ImageFilter.GaussianBlur(radius=2))

# Display the Gaussian Blurred image
gaussian_blurred_image.show()

输出图像

imagefilter gaussianblur
广告