首页 > 编程 > Python > 正文

在Python中使用PIL模块对图片进行高斯模糊处理的教程

2019-11-25 17:32:31
字体:
来源:转载
供稿:网友

从一篇文章中看到,PIL 1.1.5 已经内置了高斯模糊,但是并没有在文档中提及,而且PIL的高斯模糊中 radius 是硬编码, 虽然构造方法中有传入 radius 参数,但压根就没有用到 (看这里),所以需要自己进行改造,当然,知道了原因, 修改起来自然非常简单了。

结合帖子中的需求,对局部进行高斯模糊,所以还需要结合使用 crop paste 方法实现局部使用滤镜。

代码如下:

#-*- coding: utf-8 -*-from PIL import Image, ImageFilterclass MyGaussianBlur(ImageFilter.Filter):  name = "GaussianBlur"  def __init__(self, radius=2, bounds=None):    self.radius = radius    self.bounds = bounds  def filter(self, image):    if self.bounds:      clips = image.crop(self.bounds).gaussian_blur(self.radius)      image.paste(clips, self.bounds)      return image    else:      return image.gaussian_blur(self.radius)bounds = (150, 130, 280, 230)image = Image.open('source.jpg')image = image.filter(MyGaussianBlur(radius=29, bounds=bounds))image.show()

可以看下效果:

201555170400852.jpg (500×667)

201555170538214.jpg (500×667)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表