用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实现基本进制转换的方法
Jul 11 Python
Python调用C++程序的方法详解
Jan 24 Python
详解python基础之while循环及if判断
Aug 24 Python
Pyinstaller将py打包成exe的实例
Mar 31 Python
python验证码识别教程之利用投影法、连通域法分割图片
Jun 04 Python
python实现支付宝转账接口
May 07 Python
Django单元测试工具test client使用详解
Aug 02 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
简单了解Python变量作用域正确使用方法
Jun 12 Python
java字符串格式化输出实例讲解
Jan 06 Python
Python re.sub 反向引用的实现
Jul 07 Python
一篇文章弄懂Python关键字、标识符和变量
Jul 15 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
用header 发送cookie的php代码
2007/03/16 PHP
PHP 引用是个坏习惯
2010/03/12 PHP
php+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
js 开发之autocomplete="off"在chrom中失效的解决办法
2017/09/28 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
Python 高级专用类方法的实例详解
2017/09/11 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
html5与css3小应用
2013/04/03 HTML / CSS
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
省三好学生申请材料
2014/01/22 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
idea下配置tomcat避坑详解
2022/04/12 Servers
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技