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 NumPy库安装使用笔记
May 18 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
Jun 13 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
Python导入模块时遇到的错误分析
Aug 30 Python
Python绘制KS曲线的实现方法
Aug 13 Python
python爬虫获取百度首页内容教学
Dec 23 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
python实现海螺图片的方法示例
May 12 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
Django 自定义404 500等错误页面的实现
Mar 08 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
python中子类与父类的关系基础知识点
Feb 02 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 XML操作的各种方法解析(比较详细)
2010/06/17 PHP
php实现可运算的验证码
2015/11/10 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
jquery实现购物车基本功能
2019/10/25 jQuery
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
python列表的常用操作方法小结
2016/05/21 Python
Python语言描述随机梯度下降法
2018/01/04 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
四年级数学教学反思
2014/02/02 职场文书
趣味游戏活动方案
2014/02/07 职场文书
气象学专业个人求职信
2014/03/15 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
新教师个人工作总结
2015/02/06 职场文书
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库