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实现的多线程端口扫描功能示例
Jan 21 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
python小程序实现刷票功能详解
Jul 17 Python
Python Django的安装配置教程图文详解
Jul 17 Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 Python
TensorFlow 读取CSV数据的实例
Feb 05 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 Python
快速创建python 虚拟环境
Nov 28 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
python pyhs2 的安装操作
Apr 07 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
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
基于jquery循环map功能的代码
2011/02/26 Javascript
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
2011/07/08 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
Python语言生成水仙花数代码示例
2017/12/18 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
Python for i in range ()用法详解
2020/09/18 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
工程管理专业毕业生自荐信
2014/01/24 职场文书
语文教育专业求职信
2014/06/28 职场文书
环保项目建议书
2014/08/26 职场文书
群教班子对照检查材料
2014/08/26 职场文书
个人向公司借款协议书
2014/10/09 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
政审证明材料
2015/06/19 职场文书
任命书格式模板
2015/09/22 职场文书
《月光曲》教学反思
2016/02/16 职场文书