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列表与元组详解实例
Nov 01 Python
跟老齐学Python之正规地说一句话
Sep 28 Python
线程和进程的区别及Python代码实例
Feb 04 Python
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
Apr 28 Python
Python中Django发送带图片和附件的邮件
Mar 31 Python
pandas数据预处理之dataframe的groupby操作方法
Apr 13 Python
详解windows python3.7安装numpy问题的解决方法
Aug 13 Python
Python 实现微信防撤回功能
Apr 29 Python
Python读取stdin方法实例
May 24 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
python使用turtle库绘制奥运五环
Feb 24 Python
python线程里哪种模块比较适合
Aug 02 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数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
php mysql数据库操作分页类
2008/06/04 PHP
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
bootstrap-paginator服务器端分页使用方法详解
2020/02/13 Javascript
Python实现的简单计算器功能详解
2018/08/25 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
Python sys模块常用方法解析
2020/02/20 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
销售高级职员求职信
2013/10/29 职场文书
大学生求职信例文
2014/06/29 职场文书
团代会开幕词
2015/01/28 职场文书
碧霞祠导游词
2015/02/09 职场文书
医德医风个人总结
2015/02/28 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书