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实现队列的方法
May 26 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
python中的tcp示例详解
Dec 09 Python
解决Python下json.loads()中文字符出错的问题
Dec 19 Python
Python 获取 datax 执行结果保存到数据库的方法
Jul 11 Python
Python整数与Numpy数据溢出问题解决
Sep 11 Python
python多进程间通信代码实例
Sep 30 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
python更新数据库中某个字段的数据(方法详解)
Nov 18 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
Python OpenCV快速入门教程
Apr 17 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
2.PHP入门
2006/10/09 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
运输服务质量承诺书
2014/03/27 职场文书
妇女工作先进事迹
2014/08/17 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
辩护词格式
2015/05/22 职场文书
公司岗位说明书
2015/10/08 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技
box-shadow单边阴影的实现
2023/05/21 HTML / CSS