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编码时应该注意的几个情况
Mar 04 Python
Python正则表达式的使用范例详解
Aug 08 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
python实现按行分割文件
Jul 22 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
快速解决docker-py api版本不兼容的问题
Aug 30 Python
python tkinter组件摆放方式详解
Sep 16 Python
使用python动态生成波形曲线的实现
Dec 04 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
Django表单提交后实现获取相同name的不同value值
May 14 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
php使用escapeshellarg时中文被过滤的解决方法
2016/07/10 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
js模糊查询实例分享
2016/12/26 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
Python生成随机数的方法
2014/01/14 Python
Python操作CouchDB数据库简单示例
2015/03/10 Python
Python教程之全局变量用法
2016/06/27 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
日本小田急百货官网:Odakyu
2018/07/19 全球购物
大学运动会通讯稿
2014/01/28 职场文书
小学五年级学生评语
2014/04/22 职场文书
护理专业求职信
2014/06/15 职场文书
法制主题班会教案
2015/08/13 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers