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 中文字符串的处理实现代码
Oct 25 Python
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
Python实现的简单hangman游戏实例
Jun 28 Python
详解Python中的文件操作
Aug 28 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
python sorted函数的小练习及解答
Sep 18 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 23 Python
详解分布式系统中如何用python实现Paxos
May 18 Python
python+opencv实现视频抽帧示例代码
Jun 11 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
js自定义弹框插件的封装
2020/08/24 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
python 自动提交和抓取网页
2009/07/13 Python
python实现封装得到virustotal扫描结果
2014/10/05 Python
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
python检查指定文件是否存在的方法
2015/07/06 Python
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
基于python实现操作git过程代码解析
2020/07/27 Python
python如何实现递归转非递归
2021/02/25 Python
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
精选干货:Java精选笔试题附答案
2014/01/18 面试题
给老婆大人的检讨书
2014/02/24 职场文书
贷款委托书怎么写
2014/08/02 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS