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提取html文件中的特定数据的实现代码
Mar 24 Python
python调用cmd命令行制作刷博器
Jan 13 Python
深度剖析使用python抓取网页正文的源码
Jun 11 Python
Python实现栈的方法
May 26 Python
Python pickle模块用法实例分析
May 27 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
python检测IP地址变化并触发事件
Dec 26 Python
利用python实现对web服务器的目录探测的方法
Feb 26 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
python数据归一化及三种方法详解
Aug 06 Python
Django中使用MySQL5.5的教程
Dec 18 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 生成随机验证码图片代码
2010/02/08 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
webpack3之loader全解析
2017/10/26 Javascript
详解vuex状态管理模式
2018/11/01 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
学生党员思想汇报
2013/12/28 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
2014年班组长工作总结
2014/11/20 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
科级干部培训心得体会
2016/01/06 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle