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使用range函数计算一组数和的方法
May 07 Python
python实现域名系统(DNS)正向查询的方法
Apr 19 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
python方向键控制上下左右代码
Jan 20 Python
python求解数组中两个字符串的最小距离
Sep 27 Python
Python 从列表中取值和取索引的方法
Dec 25 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
python有几个版本
Jun 17 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
解决python3中os.popen()出错的问题
Nov 19 Python
用python爬虫批量下载pdf的实现
Dec 01 Python
Python PIL按比例裁剪图片
May 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
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
PHP强制转化的形式整理
2020/05/22 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
一道SQL面试题
2012/12/31 面试题
如何清空Session
2015/02/23 面试题
员工薪酬福利制度
2014/01/17 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
中国合伙人观后感
2015/06/02 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
swagger如何返回map字段注释
2021/07/03 Java/Android
AJAX实现省市县三级联动效果
2021/10/16 Javascript
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python