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使用MySQLdb访问mysql数据库的方法
Aug 03 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
python中(str,list,tuple)基础知识汇总
Feb 20 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
python通过tcp发送xml报文的方法
Dec 28 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
django queryset 去重 .distinct()说明
May 19 Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 Python
通过代码实例了解Python sys模块
Sep 14 Python
提高python代码运行效率的一些建议
Sep 29 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
python字符串拼接+和join的区别详解
Dec 03 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 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python的ORM框架SQLObject入门实例
2014/04/28 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
django 实现简单的插入视频
2020/04/07 Python
在python中求分布函数相关的包实例
2020/04/15 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
英语专业个人求职自荐信
2013/09/21 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
vue实现锚点定位功能
2021/06/29 Vue.js
oracle索引总结
2021/09/25 Oracle
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle