用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中的正则表达式的用法
Apr 09 Python
Python调用C++程序的方法详解
Jan 24 Python
python如何读写json数据
Mar 21 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
Windows下PyCharm安装图文教程
Aug 27 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
python小程序实现刷票功能详解
Jul 17 Python
python+pygame实现坦克大战
Sep 10 Python
python TK库简单应用(实时显示子进程输出)
Oct 29 Python
Python内置加密模块用法解析
Nov 25 Python
Python实现手机号自动判断男女性别(实例解析)
Dec 22 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 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
长波知识介绍
2021/03/01 无线电
有关php运算符的知识大全
2011/11/03 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
PHP Class&Object -- 解析PHP实现二叉树
2013/06/25 PHP
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
Python读取mp3中ID3信息的方法
2015/03/05 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
Python3.9新特性详解
2020/10/10 Python
python openCV自制绘画板
2020/10/27 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
大学生学习自我评价
2014/01/13 职场文书
2014新年寄语
2014/01/20 职场文书
知识竞赛活动方案
2014/02/18 职场文书
优秀广告词大全
2014/03/19 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
2016年国培研修日志
2015/11/13 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
筑梦中国心得体会
2016/01/18 职场文书
门面租赁合同范文
2019/08/06 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle
MySQL数据库必备之条件查询语句
2021/10/15 MySQL