Python实现PS滤镜Fish lens图像扭曲效果示例


Posted in Python onJanuary 29, 2018

本文实例讲述了Python实现PS滤镜Fish lens图像扭曲效果。分享给大家供大家参考,具体如下:

这里实现 PS 滤镜中的一种几何变换? Fish lens, 对图像做扭曲,感觉就像通过一个凸镜或者凹镜在观察图像一样。

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:/Visual Effects/PS Algorithm/4.jpg'
img=io.imread(file_name2)
img = img_as_float(img)
row, col, channel = img.shape
img_out = img * 1.0
R=(min(row, col)/2)
# gamma > 1 zoom in gamma < 1 zoom out
gamma = 1.5
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
r_new = R*np.power(r/R, gamma)
x_new = r_new * np.cos(theta) + center_x
y_new = center_y - r_new * 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.title('3water.com')
plt.imshow (img)
plt.axis('off')
plt.figure (2)
plt.title('3water.com')
plt.imshow (img_out)
plt.axis('off')
plt.show()

运行效果:

Python实现PS滤镜Fish lens图像扭曲效果示例

Python实现PS滤镜Fish lens图像扭曲效果示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python del()函数用法
Mar 24 Python
Python中处理unchecked未捕获异常实例
Jan 17 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
python通过微信发送邮件实现电脑关机
Jun 20 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
python设置环境变量的作用和实例
Jul 09 Python
python如何求数组连续最大和的示例代码
Feb 04 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
Python自动登录QQ的实现示例
Aug 28 Python
python实现识别手写数字 python图像识别算法
Mar 23 #Python
Python实现简易版的Web服务器(推荐)
Jan 29 #Python
python实现图像识别功能
Jan 29 #Python
Python使用正则表达式获取网页中所需要的信息
Jan 29 #Python
python实现K最近邻算法
Jan 29 #Python
python简单实现操作Mysql数据库
Jan 29 #Python
Django框架教程之正则表达式URL误区详解
Jan 28 #Python
You might like
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
关于JavaScript中的关联数组分析
2013/04/09 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
Augularjs-起步详解
2016/07/08 Javascript
ECMAScript6--解构
2017/03/30 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
Python入门篇之条件、循环
2014/10/17 Python
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
Python实现基于权重的随机数2种方法
2015/04/28 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
Django如何将URL映射到视图
2019/07/29 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
音乐表演专业毕业生求职信
2013/10/14 职场文书
法学专业自我鉴定
2014/02/05 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
售后服务承诺书范文
2014/03/26 职场文书
小学家长评语大全
2014/04/16 职场文书
绿色环保标语
2014/06/12 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
使用feign服务调用添加Header参数
2021/06/23 Java/Android