Python实现PS滤镜功能之波浪特效示例


Posted in Python onJanuary 26, 2018

本文实例讲述了Python实现PS滤镜功能之波浪特效。分享给大家供大家参考,具体如下:

这里用 Python 实现 PS 滤镜的波浪特效,具体效果可以参考附录说明

import numpy as np
from skimage import img_as_float
import matplotlib.pyplot as plt
from skimage import io
import numpy.matlib
import math
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
alpha = 70.0
beta = 30.0
degree = 20.0
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
x = degree * np.sin(2 * math.pi * yy_dif / alpha) + xx_dif
y = degree * np.cos(2 * math.pi * xx_dif / beta) + yy_dif
x_new = x + center_x
y_new = center_y - y 
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()

附录:PS 滤镜——波浪 wave

%%% Wave
%%% 波浪效果
clc;
clear all;
close all;
addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm');
I=imread('4.jpg');
Image=double(I);
% Image=0.2989 * I(:,:,1) + 0.5870 * I(:,:,2) + 0.1140 * I(:,:,3);
[row, col,channel]=size(Image);
R=floor(max(row, col)/2);
Image_new=Image;
Degree=30;  % 控制扭曲的程度
Center_X=(col+1)/2;
Center_Y=(row+1)/2;
for i=1:row
  for j=1:col
    x0=j-Center_X;
    y0=Center_Y-i;
    x=Degree*sin(2*pi*y0/128)+x0;
    y=Degree*cos(2*pi*x0/128)+y0;
    x=x+col/2;
    y=row/2-y;
    if(x>1 && x<col && y<row && y>1)
      x1=floor(x);
      y1=floor(y);
      p=x-x1;
      q=y-y1;
       Image_new(i,j,:)=(1-p)*(1-q)*Image(y1,x1,:)+p*(1-q)*Image(y1,x1+1,:)...
              +q*(1-p)*Image(y1+1,x1,:)+p*q*Image(y1+1,x1+1,:);
    end
  end
end
figure, imshow(Image_new/255);

本例Python运行效果:

原图

Python实现PS滤镜功能之波浪特效示例

效果图

Python实现PS滤镜功能之波浪特效示例

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

Python 相关文章推荐
Python程序语言快速上手教程
Jul 18 Python
python进阶教程之函数对象(函数也是对象)
Aug 30 Python
Python3读取文件常用方法实例分析
May 22 Python
对Python3.6 IDLE常用快捷键介绍
Jul 16 Python
Django models.py应用实现过程详解
Jul 29 Python
python输出带颜色字体实例方法
Sep 01 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
python基于pygame实现飞机大作战小游戏
Nov 19 Python
matplotlib对象拾取事件处理的实现
Jan 14 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 #Python
python如何重载模块实例解析
Jan 25 #Python
Python进程间通信Queue实例解析
Jan 25 #Python
Python操作Redis之设置key的过期时间实例代码
Jan 25 #Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 #Python
python画出三角形外接圆和内切圆的方法
Jan 25 #Python
Python实现批量压缩图片
Jan 25 #Python
You might like
模拟xcopy的函数
2006/10/09 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
vuejs如何配置less
2017/04/25 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
基于python的列表list和集合set操作
2019/11/24 Python
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
初中语文教学反思
2014/02/02 职场文书
教师职称自我鉴定
2014/02/12 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
钱学森观后感
2015/06/04 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
一文搞懂python异常处理、模块与包
2021/06/26 Python