用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实现的文件同步服务器实例
Jun 02 Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 Python
Python编程之gui程序实现简单文件浏览器代码
Dec 08 Python
Python从零开始创建区块链
Mar 06 Python
Python实现字符串的逆序 C++字符串逆序算法
May 28 Python
对django的User模型和四种扩展/重写方法小结
Aug 17 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 Python
python unichr函数知识点总结
Dec 16 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 02 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
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
python实现rsa加密实例详解
2017/07/19 Python
python图形用户接口实例详解
2019/12/16 Python
python基于event实现线程间通信控制
2020/01/13 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
局域网标准
2016/09/10 面试题
工厂厂长岗位职责
2013/11/08 职场文书
2013年员工自我评价范文
2013/12/27 职场文书
环保公益策划方案
2014/08/15 职场文书
2014年德育工作总结
2014/11/20 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
担保书范本
2015/01/20 职场文书
课外活动总结
2015/02/04 职场文书
关于环保的宣传稿
2015/07/23 职场文书
高中政治教师教学反思
2016/02/23 职场文书
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记