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


Posted in Python onMay 05, 2015

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

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

代码如下:

#-*- coding: utf-8 -*-

from PIL import Image, ImageFilter

class 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()

可以看下效果:

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

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

Python 相关文章推荐
Python中的zipfile模块使用详解
Jun 25 Python
Python解析并读取PDF文件内容的方法
May 08 Python
Python快速查找list中相同部分的方法
Jun 27 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
Jul 12 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
Python序列化pickle模块使用详解
Mar 05 Python
Jupyter notebook无法导入第三方模块的解决方式
Apr 15 Python
python如何删除文件、目录
Jun 23 Python
如何正确理解python装饰器
Jun 15 Python
Python Matplotlib库实现画局部图
Nov 17 Python
在Python中使用mechanize模块模拟浏览器功能
May 05 #Python
python实现自动更换ip的方法
May 05 #Python
浅谈MySQL中的触发器
May 05 #Python
python去除所有html标签的方法
May 05 #Python
python实现将汉字转换成汉语拼音的库
May 05 #Python
python基于Tkinter库实现简单文本编辑器实例
May 05 #Python
python实现的简单窗口倒计时界面实例
May 05 #Python
You might like
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
详解webpack 多入口配置
2017/06/16 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
详解python中字典的循环遍历的两种方式
2017/02/07 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
介绍一下Python下range()函数的用法
2013/11/07 面试题
应届生护士求职信
2013/11/01 职场文书
十岁生日家长答谢词
2014/01/17 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
团结友爱主题班会
2015/08/13 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
Golang: 内建容器的用法
2021/05/05 Golang
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang