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中生成Epoch的方法
Apr 26 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
pandas.loc 选取指定列进行操作的实例
May 18 Python
Python常用字符串替换函数strip、replace及sub用法示例
May 21 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
react+django清除浏览器缓存的几种方法小结
Jul 17 Python
使用python检查yaml配置文件是否符合要求
Apr 09 Python
基于Python的Jenkins的二次开发操作
May 12 Python
Pycharm制作搞怪弹窗的实现代码
Feb 19 Python
django注册用邮箱发送验证码的实现
Apr 18 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
php在线生成ico文件的代码
2007/10/09 PHP
一贴学会PHP 新手入门教程
2009/08/03 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
清空上传控件input file的值
2010/07/03 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
[02:33]2018 DOTA2亚洲邀请赛回顾视频 再次拾起那些美妙的时刻
2018/04/10 DOTA
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
Python中装饰器高级用法详解
2017/12/25 Python
python reverse反转部分数组的实例
2018/12/13 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
前台文员的岗位职责
2013/11/14 职场文书
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
超市端午节活动方案
2014/01/23 职场文书
小学生家长寄语
2014/04/02 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
五一放假通知怎么写
2015/08/18 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
Python实现列表拼接和去重的三种方式
2021/07/02 Python