首页 教程 php教程 教程详情

python如何实现波浪滤镜特效 python实现波浪滤镜特效代码示例

小编:袖梨 发布日期:2020-12-02

python如何实现波浪滤镜特效?本篇文章小编给大家分享一下python实现波浪滤镜特效代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

代码如下:

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.imshow (img)
plt.axis('off')

plt.figure (2)
plt.imshow (img_out)
plt.axis('off')

plt.show()

实现效果

相关文章

推荐游戏

  • 街机弹珠台
    街机弹珠台
    益智休闲
    79.6 MB
    《街机弹珠台》又是一款弹珠游戏,这款游戏的画面将更加炫丽,它集合了多种弹珠游戏,和各种经典...
    点击下载
  • 无限少女
    无限少女
    角色扮演
    42.5 MB
    《无限少女》是一款日系的二次元同人卡牌手游。游戏界面美轮美奂,玩法模式设计新颖,玩家可以见...
    点击下载
  • 永远的7日之都
    永远的7日之都
    角色扮演
    938.7 MB
    《永远的7日之都》是一款网易制作与发行的日系动作RPG手游,有着庞大的故事观,诸多拥有不同实力...
    点击下载
  • 寒灵之剑
    寒灵之剑
    回合网游
    132.7 MB
    《寒灵之剑》是2014年首款真3D的回合制手游,此款游戏汲取经典回合制游戏精髓,复原了回合制游戏...
    点击下载