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 创建子进程模块subprocess详解
Apr 08 Python
详解Python的Django框架中的通用视图
May 04 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
用python爬取租房网站信息的代码
Dec 14 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
django 单表操作实例详解
Jul 30 Python
Django之路由层的实现
Sep 09 Python
如何用OpenCV -python3实现视频物体追踪
Dec 04 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
使用python操作lmdb对数据读取的实例
Dec 11 Python
Python深度学习之实现卷积神经网络
Jun 05 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
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
Python中super()函数简介及用法分享
2016/07/11 Python
总结python实现父类调用两种方法的不同
2017/01/15 Python
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
python执行系统命令后获取返回值的几种方式集合
2018/05/12 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
pip install命令安装扩展库整理
2021/03/02 Python
出纳员岗位责任制
2014/02/11 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
尊师重教演讲稿
2014/09/04 职场文书
解除租房协议书
2014/12/03 职场文书
工会积极分子个人总结
2015/03/03 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
mysq启动失败问题及场景分析
2021/07/15 MySQL
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS