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中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
python 自定义对象的打印方法
Jan 12 Python
使用python的pandas为你的股票绘制趋势图
Jun 26 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
解决Python使用列表副本的问题
Dec 19 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
Django框架安装及项目创建过程解析
Sep 14 Python
Python语言中的数据类型-序列
Feb 24 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
用php+mysql一个名片库程序
2006/10/09 PHP
php建立Ftp连接的方法
2015/03/07 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
js 浮动层菜单收藏
2009/01/16 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
jQuery实现简单弹幕制作
2020/12/10 jQuery
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
为python设置socket代理的方法
2015/01/14 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
python全栈开发语法总结
2020/11/22 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
大学生求职信例文
2014/06/29 职场文书
党支部活动策划方案
2014/08/18 职场文书
机关职员工作检讨书
2014/10/23 职场文书
2014年教学工作总结
2014/11/13 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
礼貌问候语大全
2015/11/10 职场文书
高一语文教学反思
2016/02/16 职场文书
python turtle绘图命令及案例
2021/11/23 Python
nginx静态资源的服务器配置方法
2022/07/07 Servers