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中装饰器的用法
Jun 28 Python
用Eclipse写python程序
Feb 10 Python
如何使用Python的Requests包实现模拟登陆
Apr 27 Python
Python获取网段内ping通IP的方法
Jan 31 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
浅谈Python中eval的强大与危害
Mar 13 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
Python爬取某平台短视频的方法
Feb 08 Python
Python制作一个随机抽奖小工具的实现
Jul 07 Python
virtualenv隔离Python环境的问题解析
Jun 21 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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
PHP $_SERVER详解
2009/01/16 PHP
PHP 文件缓存的性能测试
2010/04/25 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
Array对象方法参考
2006/10/03 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
javascript 判断用户有没有操作页面
2017/10/17 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
Cpy和Python的效率对比
2015/03/20 Python
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
中学教师实习自我鉴定
2013/09/28 职场文书
文明礼仪标语
2014/06/13 职场文书
开展警示教育活动总结
2015/05/09 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS