python 实现波浪滤镜特效


Posted in Python onDecember 02, 2020

本文用 Python 实现 PS 滤镜的波浪特效

import numpy as np
from skimage import img_as_float
import matplotlib.pyplot as plt
from skimage import io
import numpy.matlib
import math
# 图片位置
file_name2='D:/Visual Effects/PS Algorithm/4.jpg'
img=io.imread(file_name2)

img = img_as_float(img)

row, col, channel = img.shape
img_out = img * 1.0
alpha = 70.0
beta = 30.0
degree = 20.0

center_x = (col-1)/2.0
center_y = (row-1)/2.0

xx = np.arange(col)
yy = np.arange(row)

x_mask = numpy.matlib.repmat (xx, row, 1)
y_mask = numpy.matlib.repmat (yy, col, 1)
y_mask = np.transpose(y_mask)

xx_dif = x_mask - center_x
yy_dif = center_y - y_mask

x = degree * np.sin(2 * math.pi * yy_dif / alpha) + xx_dif
y = degree * np.cos(2 * math.pi * xx_dif / beta) + yy_dif

x_new = x + center_x
y_new = center_y - y 

int_x = np.floor (x_new)
int_x = int_x.astype(int)
int_y = np.floor (y_new)
int_y = int_y.astype(int)

for ii in range(row):
  for jj in range (col):
    new_xx = int_x [ii, jj]
    new_yy = int_y [ii, jj]

    if x_new [ii, jj] < 0 or x_new [ii, jj] > col -1 :
      continue
    if y_new [ii, jj] < 0 or y_new [ii, jj] > row -1 :
      continue

    img_out[ii, jj, :] = img[new_yy, new_xx, :]


plt.figure (1)
plt.imshow (img)
plt.axis('off')

plt.figure (2)
plt.imshow (img_out)
plt.axis('off')

plt.show()

实现效果

python 实现波浪滤镜特效

以上就是python 实现波浪滤镜特效的详细内容,更多关于python 波浪滤镜的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
浅谈python数据类型及类型转换
Dec 18 Python
TensorFlow如何实现反向传播
Feb 06 Python
python实现求解列表中元素的排列和组合问题
Mar 15 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
解决Mac下使用python的坑
Aug 13 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
Python类class参数self原理解析
Nov 19 Python
python 如何读、写、解析CSV文件
Mar 03 Python
Django使用echarts进行可视化展示的实践
Jun 10 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
Apr 06 Python
python 如何对logging日志封装
Dec 02 #Python
python3中确保枚举值代码分析
Dec 02 #Python
python使用yaml 管理selenium元素的示例
Dec 01 #Python
python3处理word文档实例分析
Dec 01 #Python
python3中布局背景颜色代码分析
Dec 01 #Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 #Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 #Python
You might like
PHP提取中文首字母
2008/04/09 PHP
PHP 开源框架22个简单简介
2009/08/24 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
react 原生实现头像滚动播放的示例
2020/04/21 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
Atom的python插件和常用插件说明
2018/07/08 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
青年创业培训欢迎词
2014/01/08 职场文书
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android