用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操作MongoDB基础知识
Nov 01 Python
使用Python3制作TCP端口扫描器
Apr 17 Python
使用python来调用CAN通讯的DLL实现方法
Jul 03 Python
python 执行终端/控制台命令的例子
Jul 12 Python
python自动生成model文件过程详解
Nov 02 Python
python实现把两个二维array叠加成三维array示例
Nov 29 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
Keras自定义IOU方式
Jun 10 Python
如何利用python发送邮件
Sep 26 Python
Python字典dict常用方法函数实例
Nov 09 Python
用ldap作为django后端用户登录验证的实现
Dec 07 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
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
php代码把全角数字转为半角数字
2007/12/10 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
python文件比较示例分享
2014/01/10 Python
Python写的Socks5协议代理服务器
2014/08/06 Python
python通过索引遍历列表的方法
2015/05/04 Python
python 中split 和 strip的实例详解
2017/07/12 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
python flask安装和命令详解
2019/04/02 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
文秘人员工作职责
2014/01/31 职场文书
学生周末长期请假条
2014/02/15 职场文书
进口业务员岗位职责
2014/04/06 职场文书
综合内勤岗位职责
2014/04/14 职场文书
给学校的建议书范文
2014/05/15 职场文书
《打电话》教学反思
2016/02/22 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL