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 sqlobject(mysql)中文乱码解决方法
Nov 14 Python
在Django中创建动态视图的教程
Jul 15 Python
python中子类调用父类函数的方法示例
Aug 18 Python
python初学之用户登录的实现过程(实例讲解)
Dec 23 Python
Python实现学校管理系统
Jan 11 Python
Flask框架Jinjia模板常用语法总结
Jul 19 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
Apr 22 Python
python 获取字典特定值对应的键的实现
Sep 29 Python
Python学习之异常中的finally使用详解
Mar 16 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
一个ubbcode的函数,速度很快.
2006/10/09 PHP
php在线代理转向代码
2012/05/05 PHP
Laravel日志用法详解
2016/10/09 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
使用JS动态显示文本
2017/09/09 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
Python程序设计入门(3)数组的使用
2014/06/16 Python
python常见数制转换实例分析
2015/05/09 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
Python 控制终端输出文字的实例
2019/07/12 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
小学教师的个人自我鉴定
2013/10/24 职场文书
商超业务员岗位职责
2014/03/12 职场文书
2014年党务公开方案
2014/05/08 职场文书
租房协议书范文
2014/08/20 职场文书
机关职员工作检讨书
2014/10/23 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
优化Mysql查询的示例
2022/04/26 MySQL