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获取一组汉字拼音首字母的方法
Jul 01 Python
python在文本开头插入一行的实例
May 02 Python
Python列表解析配合if else的方法
Jun 23 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
django如何通过类视图使用装饰器
Jul 24 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
python入门教程之基本算术运算符
Nov 13 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
Python爬虫基础初探selenium
May 31 Python
Python数据分析之绘图和可视化详解
Jun 02 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
多文件上载系统完整版
2006/10/09 PHP
php miniBB中文乱码问题解决方法
2008/11/25 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
PHP高级编程实例:编写守护进程
2014/09/02 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
iView框架问题整理小结
2018/10/16 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
Python描述器descriptor详解
2015/02/03 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
Python 下载及安装详细步骤
2019/11/04 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
Python如何读写二进制数组数据
2020/08/01 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
索桥的故事教学反思
2014/02/06 职场文书
考博专家推荐信
2014/05/10 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL