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 15 Python
python逆向入门教程
Jan 15 Python
python实现人民币大写转换
Jun 20 Python
Python中类的创建和实例化操作示例
Feb 27 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
Django ORM 聚合查询和分组查询实现详解
Aug 09 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 Python
python 三种方法提取pdf中的图片
Feb 07 Python
Python如何利用pandas读取csv数据并绘图
Jul 07 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 set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
php生成静态页面的简单示例
2014/04/17 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
Angular2 http jsonp的实例详解
2017/08/31 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
在Django中同时使用多个配置文件的方法
2015/07/22 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
2020/06/06 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
旧时光糖果:Old Time Candy
2018/02/05 全球购物
文明好少年事迹材料
2014/08/19 职场文书
公务员政审材料范文
2014/12/23 职场文书
爱心捐书倡议书
2015/04/27 职场文书
慈善募捐倡议书
2015/04/27 职场文书
离婚案件原告代理词
2015/05/23 职场文书
保护环境建议书作文300字
2015/09/14 职场文书