使用Python中的PIL模块对图像进行模糊处理

21

我一直在尝试使用PIL对图像进行模糊处理。

据我所知,需要复制图像,然后将每个像素更改为原始图片周围像素的平均值。目前进展不算太好,我正在使用Python 3.3x。

from PIL import Image 

img = Image.open("source")
im = Image.copy(img)

我知道如何使用putpixel和获取像素数据,但是我无法弄清楚如何获取周围像素的平均值。

提前感谢您的帮助!

1个回答

33

您可以直接执行:

blurred_image = original_image.filter(ImageFilter.BLUR)

请查看ImageFilter模块以获取更多选项。

您所描述的过程确实会使图像模糊,而且有些滤镜直接执行您建议的操作(例如,使用ImageFilter.Kernel方法,其中您的卷积核具有恒定的权重)。不过,使用ImageFilter将更快捷、更容易,并为您提供更多模糊及其他选项。


21
还有一个ImageFilter.GaussianBlur(radius=2),比ImageFilter.BLUR好得多。 - Sri
当我执行 blurred_image.show() 并尝试保存时,它会被保存为位图文件 (.BMP)。我该如何将其更改为 png 或 jpg 格式? - David G
1
@0x499602D2:可以单独提出这个问题;它与原始问题没有真正的关联。 - tom10
@DavidG 可能现在帮不上你了,但是... show() 使用一个单独的实用程序来显示图像,并且你只能使用它内置的功能。你应该直接使用 save() 而不是 show(),让PIL保存文件。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接