用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实现在matplotlib中两个坐标轴之间画一条直线光标的方法
May 20 Python
python实现DES加密解密方法实例详解
Jun 30 Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 Python
Python编程pygal绘图实例之XY线
Dec 09 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
用Python读取几十万行文本数据
Dec 24 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
妙用itchat! python实现久坐提醒功能
Nov 25 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
Python根据字符串调用函数过程解析
Nov 05 Python
python中实现词云图的示例
Dec 19 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
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
一些可能会用到的Node.js面试题
2019/06/15 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
详解python中的闭包
2020/09/07 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
Shell如何接收变量输入
2016/08/06 面试题
医院辞职信范文
2014/01/17 职场文书
教师节商场活动方案
2014/02/13 职场文书
浪费资源的建议书
2014/03/12 职场文书
环保倡议书格式范文
2014/05/14 职场文书
医院党员公开承诺书
2014/08/30 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis