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 07 Python
Python中利用sorted()函数排序的简单教程
Apr 27 Python
教你用Python写安卓游戏外挂
Jan 11 Python
Python自定义线程池实现方法分析
Feb 07 Python
Python判断两个list是否是父子集关系的实例
May 04 Python
基于python OpenCV实现动态人脸检测
May 25 Python
对Python发送带header的http请求方法详解
Jan 02 Python
pytorch逐元素比较tensor大小实例
Jan 03 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
Python使用Excel将数据写入多个sheet
May 16 Python
总结Python连接CS2000的详细步骤
Jun 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登录验证码的实现与使用方法
2016/07/07 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
jquery里的each使用方法详解
2010/12/22 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
javascript正则表达式总结
2016/02/29 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
webpack4简单入门实例
2018/09/06 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
layui select 禁止点击的实现方法
2019/09/05 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
Python concurrent.futures模块使用实例
2019/12/24 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
基于python实现地址和经纬度转换
2020/05/19 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
女大学生个人求职信
2013/12/09 职场文书
计生个人工作总结
2015/02/28 职场文书
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python