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是编译运行的验证方法
Jan 30 Python
Python中的自省(反射)详解
Jun 02 Python
Python中动态检测编码chardet的使用教程
Jul 06 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
python实现图书管理系统
Mar 12 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
python里运用私有属性和方法总结
Jul 08 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 Python
Django models.py应用实现过程详解
Jul 29 Python
Pycharm+Python+PyQt5使用详解
Sep 25 Python
Python的形参和实参使用方式
Dec 24 Python
python调用API接口实现登陆短信验证
May 10 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
神族 Protoss 历史背景
2020/03/14 星际争霸
PHP技术开发技巧分享
2010/03/23 PHP
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
python和ruby,我选谁?
2017/09/13 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
如何利用cmp命令比较文件
2016/04/11 面试题
工商管理专业职业生涯规划
2014/01/01 职场文书
少先队入队活动方案
2014/02/08 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
征求意见函
2015/06/05 职场文书
离婚协议书范文2016
2016/03/18 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书