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实现颜色rgb和hex相互转换的函数
Mar 19 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
TensorFlow实现MLP多层感知机模型
Mar 09 Python
python如何爬取个性签名
Jun 19 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 Python
Mac 使用python3的matplot画图不显示的解决
Nov 23 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 Python
python中@contextmanager实例用法
Feb 07 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 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 CLI实现简单的数据库实时监控调度
2009/07/01 PHP
php方法调用模式与函数调用模式简例
2011/09/20 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
php curl_init函数用法
2014/01/31 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
2017/02/21 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
小程序自定义圆形进度条
2020/11/17 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
Python基于twisted实现简单的web服务器
2014/09/29 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
使用Kivy将python程序打包为apk文件
2017/07/29 Python
儿童python练习实例
2018/05/27 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
Miller Harris官网:英国小众香水品牌
2020/09/24 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
日语系毕业生推荐信
2013/11/11 职场文书
企业项目策划书
2014/01/11 职场文书
感恩教育活动总结
2014/05/05 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
python 实现体质指数BMI计算
2021/05/26 Python
react 项目中引入图片的几种方式
2021/06/02 Javascript
Python 阶乘详解
2021/10/05 Python
GPU服务器的多用户配置方法
2022/07/07 Servers