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通过urllib2爬网页上种子下载示例
Feb 24 Python
浅析Python中的多进程与多线程的使用
Apr 07 Python
使用Python装饰器在Django框架下去除冗余代码的教程
Apr 16 Python
python处理xml文件的方法小结
May 02 Python
python+pyqt实现右下角弹出框
Oct 26 Python
详解Python if-elif-else知识点
Jun 11 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
python实现电子产品商店
Feb 26 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
pytorch中图像的数据格式实例
Feb 11 Python
django使用多个数据库的方法实例
Mar 04 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在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
深入理解PHP内核(一)
2015/11/10 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
jQuery.extend 函数及用法详细
2015/09/06 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
python dict如何定义
2020/09/02 Python
python实现图片转字符画
2021/02/19 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
主管会计岗位责任制
2014/02/10 职场文书
运动会入场词50字
2014/02/20 职场文书
酒店员工手册范本
2015/05/14 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
2019个人半年工作总结
2019/06/21 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS