Python 实现PS滤镜的旋涡特效


Posted in Python onDecember 03, 2020

实现效果:

Python 实现PS滤镜的旋涡特效

实现代码

import numpy as np
from skimage import img_as_float
import matplotlib.pyplot as plt
from skimage import io
import math
import numpy.matlib

file_name2='D:/2020121173119242.png'    # 图片路径
img=io.imread(file_name2)

img = img_as_float(img)

row, col, channel = img.shape
img_out = img * 1.0
degree = 70

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

r = np.sqrt(xx_dif * xx_dif + yy_dif * yy_dif)

theta = np.arctan(yy_dif / xx_dif)

mask_1 = xx_dif < 0
theta = theta * (1 - mask_1) + (theta + math.pi) * mask_1

theta = theta + r/degree

x_new = r * np.cos(theta) + center_x
y_new = center_y - r * np.sin(theta) 

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 实现 PS 滤镜的旋涡特效的详细内容,更多关于python ps滤镜漩涡特效的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现同时给多个变量赋值的方法
Apr 30 Python
Python中isnumeric()方法的使用简介
May 19 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
python3+django2开发一个简单的人员管理系统过程详解
Jul 23 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 Python
基于Python爬取京东双十一商品价格曲线
Oct 23 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 #Python
python字符串拼接+和join的区别详解
Dec 03 #Python
python二维图制作的实例代码
Dec 03 #Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 #Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 #Python
用 Django 开发一个 Python Web API的方法步骤
Dec 03 #Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 #Python
You might like
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
javascript import css实例代码
2008/07/18 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
js分页工具实例
2015/01/28 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
Python判断变量是否已经定义的方法
2014/08/18 Python
python写日志封装类实例
2015/06/28 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
职称自我鉴定
2013/10/15 职场文书
学生打架检讨书
2014/02/14 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
出租房屋协议书
2014/09/14 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
周一问候语大全
2015/11/10 职场文书