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写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
python3大文件解压和基本操作
Dec 15 Python
python的Tqdm模块的使用
Jan 10 Python
Python文件读写保存操作的示例代码
Sep 14 Python
matplotlib实现热成像图colorbar和极坐标图的方法
Dec 13 Python
Django后端接收嵌套Json数据及解析详解
Jul 17 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
使用python远程操作linux过程解析
Dec 04 Python
关于Python解包知识点总结
May 05 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
python简单实现9宫格图片实例
Sep 03 Python
pymongo insert_many 批量插入的实例
Dec 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
1 Tube Radio
2021/03/02 无线电
简单介绍PHP非阻塞模式
2016/03/03 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
一个原生的用户等级的进度条
2010/07/03 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
Python读取网页内容的方法
2015/07/30 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
python能自学吗
2020/06/18 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
给校长的建议书
2014/03/12 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
商场广播稿范文
2015/08/19 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
java中如何截取字符串最后一位
2022/07/07 Java/Android