python 实现图片特效处理


Posted in Python onApril 03, 2022

前言:

对于 ​图片处理​,在日常生活中我们常常能够看到。

比如发个朋友圈之前,我们需要给自己的​照片加个滤镜​;在上传头像时候,需要​对照片进行裁剪​,这些都是图片的处理。

待处理的原图:

python 实现图片特效处理

一、黑白特效

  • 将图片处理后,变为黑白颜色
  • 把像素的R,G,B三个通道数值都置为:​​r*0.299+g*0.587+b*0.114​
  • 效果

黑白特效:

python 实现图片特效处理

代码:

 #!/usr/bin/env python
# encoding: utf-8

import numpy as np
from PIL import Image

class picture:
'''
This is a main Class, the file contains all documents.
One document contains paragraphs that have several sentences
It loads the original file and converts the original file to new content
Then the new content will be saved by this class
'''
def __init__(self):
self.path = 'assets/picture.jpeg'

def hello(self):
'''
This is a welcome speech
:return: self
'''
print('*' * 50)
print(' ' * 20 + '图片转换特效之黑白')
print(' ' * 5 + '作者: autofelix Date: 2022-01-17 13:14')
print('*' * 50)
return self

def run(self):
'''
The program entry
'''
im = self.to_black_white()
im.show()
im.save('assets/black_white.jpeg')

def to_black_white(self):
'''
Picture to black white
'''
im = np.asarray(Image.open(self.path).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'))

if __name__ == '__main__':
picture().hello().run()

二、流年特效

  • 将图片处理后,变为流年特效
  • 把R通道的数值开平方,然后乘以一个参数
  • 效果

流年特效:

python 实现图片特效处理

代码:

#!/usr/bin/env python
# encoding: utf-8

import numpy as np
from PIL import Image

class picture:
'''
This is a main Class, the file contains all documents.
One document contains paragraphs that have several sentences
It loads the original file and converts the original file to new content
Then the new content will be saved by this class
'''
def __init__(self):
self.path = 'assets/picture.jpeg'

def hello(self):
'''
This is a welcome speech
:return: self
'''
print('*' * 50)
print(' ' * 20 + '图片转换特效之流年')
print(' ' * 5 + '作者: autofelix Date: 2022-01-17 13:14')
print('*' * 50)
return self

def run(self):
'''
The program entry
'''
im = self.fleeting()
im.show()
im.save('assets/fleeting.jpeg')

def fleeting(self, params=12):
'''
Picture to fleeting
'''
im = np.asarray(Image.open(self.path).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'))

if __name__ == '__main__':
picture().hello().run()

三、旧电影特效

  • 将图片处理后,变为旧电影特效
  • 把像素的R,G,B三个通道数值,3个通道的分别乘以3个参数后求和,最后把超过255的值置为255
  • 效果

旧电影特效:

python 实现图片特效处理

代码:

#!/usr/bin/env python
# encoding: utf-8

import numpy as np
from PIL import Image

class picture:
'''
This is a main Class, the file contains all documents.
One document contains paragraphs that have several sentences
It loads the original file and converts the original file to new content
Then the new content will be saved by this class
'''
def __init__(self):
self.path = 'assets/picture.jpeg'

def hello(self):
'''
This is a welcome speech
:return: self
'''
print('*' * 50)
print(' ' * 20 + '图片转换特效之旧电影')
print(' ' * 5 + '作者: autofelix Date: 2022-01-17 13:14')
print('*' * 50)
return self

def run(self):
'''
The program entry
'''
im = self.old_film()
im.show()
im.save('assets/old_film.jpeg')

def old_film(self):
'''
Picture to old film
'''
im = np.asarray(Image.open(self.path).convert('RGB'))
trans = np.array([[0.393, 0.769, 0.189], [0.349, 0.686, 0.168], [0.272, 0.534, 0.131]]).transpose()
im = np.dot(im, trans).clip(max=255)
return Image.fromarray(np.array(im).astype('uint8'))

if __name__ == '__main__':
picture().hello().run()

四、反色特效

  • 将图片处理后,变为反色特效
  • 这个最简单了,用255减去每个通道的原来的数值
  • 效果

反色特效:

python 实现图片特效处理

代码:

#!/usr/bin/env python
# encoding: utf-8

import numpy as np
from PIL import Image

class picture:
'''
This is a main Class, the file contains all documents.
One document contains paragraphs that have several sentences
It loads the original file and converts the original file to new content
Then the new content will be saved by this class
'''
def __init__(self):
self.path = 'assets/picture.jpeg'

def hello(self):
'''
This is a welcome speech
:return: self
'''
print('*' * 50)
print(' ' * 20 + '图片转换特效之反色')
print(' ' * 5 + '作者: autofelix Date: 2022-01-17 13:14')
print('*' * 50)
return self

def run(self):
'''
The program entry
'''
im = self.reverse()
im.show()
im.save('assets/reverse.jpeg')

def reverse(self):
'''
Picture to reverse
'''
im = 255 - np.asarray(Image.open(self.path).convert('RGB'))
return Image.fromarray(np.array(im).astype('uint8'))

if __name__ == '__main__':
picture().hello().run()

到此这篇关于python 实现图片特效处理的文章就介绍到这了,更多相关python 图片特效内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的CURL PycURL使用例子
Jun 01 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
简单了解什么是神经网络
Dec 23 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
Django 实现购物车功能的示例代码
Oct 08 Python
Python调用服务接口的实例
Jan 03 Python
pycharm访问mysql数据库的方法步骤
Jun 18 Python
Python爬虫抓取技术的一些经验
Jul 12 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
Python同时迭代多个序列的方法
Jul 28 Python
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
python实现对doc、txt、xls等文档的读写操作
Apr 02 #Python
You might like
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
nodeJS微信分享
2017/12/20 NodeJs
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
详解python中的模块及包导入
2019/08/30 Python
django实现类似触发器的功能
2019/11/15 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
PyTorch安装与基本使用详解
2020/08/31 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
参观接待方案
2014/03/17 职场文书
少先队活动总结
2014/08/29 职场文书
物流管理专业推荐信
2014/09/06 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
综合实践活动报告
2015/02/05 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
python基础之while循环语句的使用
2021/04/20 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers