用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实现模拟时钟代码推荐
Nov 08 Python
最大K个数问题的Python版解法总结
Jun 16 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
python地震数据可视化详解
Jun 18 Python
python3射线法判断点是否在多边形内
Jun 28 Python
python绘制封闭多边形教程
Feb 18 Python
Django 多对多字段的更新和插入数据实例
Mar 31 Python
Python网页解析器使用实例详解
May 30 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
python 获取剪切板内容的两种方法
Nov 28 Python
用python发送微信消息
Dec 21 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
PHP语法速查表
2006/12/06 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
python调用接口的4种方式代码实例
2019/11/19 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
资料员岗位职责
2013/11/17 职场文书
文员的职业生涯规划发展方向
2014/02/08 职场文书
暑期研修感言
2014/02/17 职场文书
护理专科自荐书范文
2014/02/18 职场文书
授权委托书格式模板
2014/04/03 职场文书
红色故事演讲稿
2014/05/22 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
校园安全广播稿范文
2014/09/25 职场文书
教师节随笔
2015/08/15 职场文书
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python