用Python PIL实现几个简单的图片特效


Posted in Python onJanuary 18, 2019

导入 numpy 、PIL

numpy用来做矩阵运算,PIL用来读取图片。

import numpy as np
from PIL import Image

读取图片,然后转换成RGB模式存在矩阵里

im = Image.open(imagename).convert('RGB')
arr = np.array(im)

查看arr的shape,可以看到arr是个3维的数组,数组大小等于 长*宽*3

In [566]: arr.shape
Out[566]: (313, 450, 3)

每个像素有3个数字表示,分别对应(R,G,B)

IN [567]: arr[0][0]
Out[567]: array([6, 4, 9], dtype=uint8)

原始图片

用Python PIL实现几个简单的图片特效

彩色转黑白

把像素的R,G,B三个通道数值都置为r*0.299+g*0.587+b*0.114

def blackWithe(imagename):
  # r,g,b = r*0.299+g*0.587+b*0.114
  im = np.asarray(Image.open(imagename).convert('RGB'))
  trans = np.array([[0.299,0.587,0.114],[0.299,0.587,0.114],[0.299,0.587,0.114]]).transpose()
  im = np.dot(im,trans)
  return Image.fromarray(np.array(im).astype('uint8'))

用Python PIL实现几个简单的图片特效

流年

把R通道的数值开平方,然后乘以一个参数

def fleeting(imagename,params=12):
  im = np.asarray(Image.open(imagename).convert('RGB'))
  im1 = np.sqrt(im*[1.0,0.0,0.0])*params
  im2 = im*[0.0,1.0,1.0]
  im = im1+im2
  return Image.fromarray(np.array(im).astype('uint8'))

用Python PIL实现几个简单的图片特效

旧电影

把像素的R,G,B三个通道数值,3个通道的分别乘以3个参数后求和,最后把超过255的值置为255

def oldFilm(imagename):
  im = np.asarray(Image.open(imagename).convert('RGB'))
  # r=r*0.393+g*0.769+b*0.189 g=r*0.349+g*0.686+b*0.168 b=r*0.272+g*0.534b*0.131
  trans = np.array([[0.393,0.769,0.189],[0.349,0.686,0.168],[0.272,0.534,0.131]]).transpose()
  # clip 超过255的颜色置为255
  im = np.dot(im,trans).clip(max=255)        
  return Image.fromarray(np.array(im).astype('uint8'))

用Python PIL实现几个简单的图片特效

反色

这个最简单了,用255减去每个通道的原来的数值

def reverse(imagename):
  im = 255 - np.asarray(Image.open(imagename).convert('RGB'))
  return Image.fromarray(np.array(im).astype('uint8'))

用Python PIL实现几个简单的图片特效

PS:示例

from PIL import Image, ImageFilter

# 打开一个jpg图像文件,注意是当前路径:
im = Image.open('Penguins.jpg')



# 模糊
im2 = im.filter(ImageFilter.BLUR)
# 模糊可设置模糊的程度
im22 = im.filter(ImageFilter.BoxBlur(200))
# 轮廓滤波
im3 = im.filter(ImageFilter.CONTOUR)
# 边缘增强滤波(锐化)
im4 = im.filter(ImageFilter.EDGE_ENHANCE)
# 浮雕滤波
im5 = im.filter(ImageFilter.EMBOSS)
# 寻找边缘信息的滤波
im6 = im.filter(ImageFilter.FIND_EDGES)

im2.save('BLUR.jpg', 'jpeg')
im3.save('CONTOUR.jpg', 'jpeg')
im4.save('EDGE_ENHANCE.jpg', 'jpeg')
im5.save('EMBOSS.jpg', 'jpeg')
im6.save('FIND_EDGES.jpg', 'jpeg')
im22.save('BoxBlur(200).jpg', 'jpeg')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
Django发送html邮件的方法
May 26 Python
python定时器(Timer)用法简单实例
Jun 04 Python
python 性能提升的几种方法
Jul 15 Python
Python制作刷网页流量工具
Apr 23 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
django加载本地html的方法
May 27 Python
python3实现多线程聊天室
Dec 12 Python
Python面向对象之类和实例用法分析
Jun 08 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
Django框架表单操作实例分析
Nov 04 Python
python爬虫容易学吗
Jun 02 Python
Python 多维List创建的问题小结
Jan 18 #Python
python感知机实现代码
Jan 18 #Python
python实现感知器算法(批处理)
Jan 18 #Python
python实现多层感知器
Jan 18 #Python
python实现多层感知器MLP(基于双月数据集)
Jan 18 #Python
基于python实现KNN分类算法
Apr 23 #Python
python实现定时发送qq消息
Jan 18 #Python
You might like
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
php读取mysql的简单实例
2014/01/15 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
php读取csc文件并输出
2015/05/21 PHP
php常量详细解析
2015/10/27 PHP
Smarty保留变量用法分析
2016/05/23 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
js获取Get值的方法
2016/09/29 Javascript
js常用DOM方法详解
2017/02/04 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
对于Python深浅拷贝的理解
2019/07/29 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
高分子材料与工程专业推荐信
2013/12/01 职场文书
七一建党节演讲稿
2014/09/11 职场文书
重阳节慰问信
2015/02/15 职场文书
新郎婚礼致辞
2015/07/27 职场文书
总结高并发下Nginx性能如何优化
2021/11/01 Servers