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装饰器验证配置文件示例
Feb 24 Python
python生成随机密码或随机字符串的方法
Jul 03 Python
Django rest framework工具包简单用法示例
Jul 20 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
python可视化爬虫界面之天气查询
Jul 03 Python
django组合搜索实现过程详解(附代码)
Aug 06 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
Python单元测试与测试用例简析
Nov 09 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
May 16 Python
Python 制作查询商品历史价格的小工具
Oct 20 Python
python SOCKET编程基础入门
Feb 27 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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
PHP 存取 MySQL 数据库的一个例子
2006/10/09 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
django中的ajax组件教程详解
2018/10/18 PHP
PDO::quote讲解
2019/01/29 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
Python中os和shutil模块实用方法集锦
2014/05/13 Python
matplotlib中legend位置调整解析
2017/12/19 Python
用python实现百度翻译的示例代码
2018/03/09 Python
通过Pandas读取大文件的实例
2018/06/07 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
给分销商的致歉信
2014/01/14 职场文书
庆八一活动方案
2014/01/25 职场文书
2015年读书月活动总结
2015/03/26 职场文书
2015年大学生工作总结
2015/04/21 职场文书
2015年教研员工作总结
2015/05/26 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
MySQL 原理与优化之Update 优化
2022/08/14 MySQL