本文实例讲述了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('www.jb51.net')

plt.imshow (img)

plt.axis('off')

plt.figure (2)

plt.title('www.jb51.net')

plt.imshow (img_out)

plt.axis('off')

plt.show()

运行效果:

希望本文所述对大家Python程序设计有所帮助。

python 艺术照片滤镜_[宜配屋]听图阁 - Python实现PS滤镜Fish lens图像扭曲效果示例...相关推荐

  1. python文件传输模块_[宜配屋]听图阁 - python 使用poster模块进行http方式的文件传输到服务器的方法...

    这几天帮内部人员做一个文件传输的小工具,要用http的方式,在用django搭建了个小框架之后,如何进行传输,特别是大文件的传输,成为主要问题.经过查资料,最后选择了通过poster这个模块来进行文件 ...

  2. python写词法分析器_[宜配屋]听图阁

    编译原理老师要求写一个java的词法分析器,想了想决定用python写一个. 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来. 有了目标,想想要怎么实现词法分析器. 1.先进行 ...

  3. 怎么用python打印照片_[宜配屋]听图阁

    这篇文章主要介绍了Python如何使用字符打印照片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 前言 第一次在学校机房里见到计算机,还是上古 ...

  4. python 判断节假日_[宜配屋]听图阁

    不废话,直接上代码Python3.6 签到代码,只需修改url,账号,密码即可,此处是登录时无验证登录,有验证码的自行补充 # -*- coding:utf-8 -*- import json imp ...

  5. python 内推_[宜配屋]听图阁

    本文实例为大家分享了网易有道2017内推编程题:洗牌,供大家参考,具体内容如下 ''' [编程题] 洗牌 时间限制:1秒 空间限制:32768K 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程 ...

  6. python中控脚本_[宜配屋]听图阁

    由于考勤机与OA对接,OA会在每天定时取考勤机数据,但是需要考勤机是连接状态,所以搜索了下相关教程,写了个脚本自动连接.完全是个Python小白,代码烂,仅作为笔记. 理论上支持所有程序的每天自动开启 ...

  7. python计算方位角_[宜配屋]听图阁

    知道两点坐标,怎么计算两点方向的方位角? 答:首先计算坐标增量dx,dy(两个对应坐标分量相减,终点的减始点的). 若dx,dy中有一个为零时,根据另一个的正负决定方位角(0,90,180,270这四 ...

  8. 用python画雨滴_[宜配屋]听图阁

    本文实例为大家分享了python实现雨滴下落到地面效果的具体代码,供大家参考,具体内容如下 本程序在Windows 64位操作系统下,安装的是Anaconda3-4.2.0 import numpy ...

  9. python telnet模块 more_[宜配屋]听图阁 - python 处理telnet返回的More,以及get想要的那个参数方法...

    问题: 需要循环获取网元返回的某个参数,并计算出平均值. 解决方案: 通过expect解决返回More的问题. 通过具体的参数位置,精确获取到参数. 讨论: 参数位置固定,不好复用. #! usr/b ...

最新文章

  1. php适合做后台吗,php是否适合做后台长驻程序
  2. ios视频硬解异常总结,12911总结
  3. Android在OnCreate中获取控件的宽度和高度
  4. 吴恩达机器学习(第五章)——Logistic回归
  5. MyBatis第四天
  6. 用jsp开发web应用并不是一个高效率的选择
  7. 暴风影音3 Build version : 3.7.11.13 漏洞
  8. linux 计算cpu利用率
  9. c语言表达ch是大写英文字母,如何用C语言输出26个英文字母和其ascii码的对照表...
  10. 防火墙与路由器的区别
  11. IM群聊消息的已读未读功能在存储空间方面的实现思路探讨
  12. 微信小程序开发学习4(视图与逻辑)
  13. 更新驱动后重启黑屏且进不了bios时的一个解决办法
  14. 会员权益营销中,设置会员权益的三个标准
  15. mysql utf8mb4 错_MYSQL保存特殊字符失败,用编码utf8mb4解决错误 Incorrect string value ...解决方法...
  16. 人工智能在量化领域应用相关论文整理
  17. MT7688 wifi 调试(二) 如何修改ra0 mac地址
  18. MVC和MVVM框架介绍
  19. mongodb robomongo authentication fail
  20. Group by 后面直接加数字

热门文章

  1. Hadoop-2.7.1+Zookeeper-3.4.8+HBase-1.2.1+Hive-2.0.0完全分布式集群
  2. 阿里、腾讯“打包”领跑云计算,两极格局将就此固化?
  3. Ubuntu20.04安装Nvidia驱动——4060显卡(黑屏解决方法)
  4. mysql数据库中吧时分秒换算成秒的函数TIME_TO_SEC()
  5. 全网推荐的理财小白必读书目《小狗钱钱》,有那么好吗?
  6. 微信小游戏个人开发者如何盈利
  7. ElasticSearch(6.3.0)的配置和使用全过程
  8. Fresco高斯模糊使用
  9. 心理美容,女性最好的化妆品
  10. 百面机器学习:支持向量机