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 ORM框架SQLAlchemy学习笔记之安装和简单查询实例
Jun 10 Python
python实现删除文件与目录的方法
Nov 10 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
对numpy中array和asarray的区别详解
Apr 17 Python
Python3中关于cookie的创建与保存
Oct 21 Python
使用python进行拆分大文件的方法
Dec 10 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
python 调用有道api接口的方法
Jan 03 Python
Python Pexpect库的简单使用方法
Jan 29 Python
Python绘制频率分布直方图的示例
Jul 08 Python
Python生成随机验证码代码实例解析
Jun 09 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 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 获取本机外网/公网IP的代码
2010/05/09 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
php显示页码分页类的封装
2017/06/08 PHP
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
js实现日历
2020/11/07 Javascript
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
python进阶教程之动态类型详解
2014/08/30 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
Python中Numpy mat的使用详解
2019/05/24 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
365 Tickets英国:全球景点门票
2019/07/06 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
SQL SERVER面试资料
2013/03/30 面试题
企业办公室岗位职责
2014/03/12 职场文书
学校清明节活动总结
2014/07/04 职场文书
《正比例》教学反思
2016/02/23 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
go goth封装第三方认证库示例详解
2022/08/14 Golang