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 re模块介绍
Nov 30 Python
python实现线程池的方法
Jun 30 Python
使用Python生成XML的方法实例
Mar 21 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 Python
python3.4实现邮件发送功能
May 28 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
在python中按照特定顺序访问字典的方法详解
Dec 14 Python
Python中一些深不见底的“坑”
Jun 12 Python
Django中使用Json返回数据的实现方法
Jun 03 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
使用Python实现音频双通道分离
Dec 25 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
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
php封装一个异常的处理类
2017/06/08 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
Python语言实现机器学习的K-近邻算法
2015/06/11 Python
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
Python通过future处理并发问题
2017/10/17 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
表达自我的市场:Society6
2018/08/01 全球购物
销售顾问的岗位职责
2013/11/13 职场文书
毕业自荐信
2013/12/16 职场文书
房地产融资计划书
2014/01/10 职场文书
公司企业表扬信
2014/01/11 职场文书
教师年度考核自我鉴定
2014/01/19 职场文书
少先队入队活动方案
2014/02/08 职场文书
六年级学生评语大全
2014/12/26 职场文书
2015年教师国培感言
2015/08/01 职场文书
Java实现简易的分词器功能
2021/06/15 Java/Android