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中pygame模块用法实例
Oct 09 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
python利用rsa库做公钥解密的方法教程
Dec 10 Python
python取数作为临时极大值(极小值)的方法
Oct 15 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
python在回调函数中获取返回值的方法
Feb 22 Python
Python后台开发Django会话控制的实现
Apr 15 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
django数据库自动重连的方法实例
Jul 21 Python
详解python常用命令行选项与环境变量
Feb 20 Python
Python 里最强的地图绘制神器
Mar 01 Python
Python IO文件管理的具体使用
Mar 20 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
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
Python中常见的数制转换有哪些
2020/05/27 Python
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
绿色城市实施方案
2014/03/19 职场文书
人力资源管理求职信
2014/08/07 职场文书
春游踏青活动方案
2014/08/14 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
工作简报怎么写
2015/07/21 职场文书
详解java如何集成swagger组件
2021/06/21 Java/Android
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android