博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python: PS 滤镜--水波特效
阅读量:5076 次
发布时间:2019-06-12

本文共 1316 字,大约阅读时间需要 4 分钟。

本文用 Python 实现 PS 滤镜中的 水波特效

import numpy as npfrom skimage import img_as_floatimport matplotlib.pyplot as pltfrom skimage import ioimport numpy.matlibfile_name2 = 'D:/Visual Effects/PS Algorithm/4.jpg'img=io.imread(file_name2)img = img_as_float(img)row, col, channel = img.shapeimg_out = img * 1.0A = 7.0B = 3.0center_x = (col-1)/2.0center_y = (row-1)/2.0xx = 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_xyy_dif = center_y - y_masktheta = np.arctan2(yy_dif,  xx_dif)r = np.sqrt(xx_dif * xx_dif + yy_dif * yy_dif)r1 = r + A*col*0.01*np.sin(B*0.1*r)x_new = r1 * np.cos(theta) + center_xy_new = center_y - r1 * 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.imshow (img)plt.axis('off')plt.figure (2)plt.imshow (img_out)plt.axis('off')plt.show()

这里写图片描述

这里写图片描述

转载于:https://www.cnblogs.com/mtcnn/p/9412149.html

你可能感兴趣的文章
docker的Docklerfile
查看>>
如何学习嵌入式?嵌入式linux学习方法步骤?4412开发板带你入门
查看>>
moby&linuxkit最小化定制linux发行版
查看>>
【转载自JHBlogs的博客】postman接口自动化,环境变量的用法详解(附postman常用的方法)...
查看>>
一页纸涵盖所有Lua基础知识点
查看>>
IntelliJ IDEA Ultimate使用
查看>>
将Microsoft SQL Server 2000数据库转换成MySQL数据库
查看>>
mac sudo: /etc/sudoers is world writable
查看>>
关于分布式爬虫
查看>>
【bzoj4636】蒟蒻的数列 离散化+线段树
查看>>
学习进度条
查看>>
strupr和strlwr字符串函数的使用
查看>>
自定义view代码
查看>>
JS匿名函数以及arguments.callee的调用
查看>>
拉筋的正确方法
查看>>
Tomcat
查看>>
纯javascript联动的例子
查看>>
短信验证码生成随机数
查看>>
大整数乘法
查看>>
用Less定义常用的CSS3效果函数及常用颜色搭配(让CSS写起来更有趣)
查看>>