用python把图片转化为波浪效果

2025-05-23 19:42:58

1、加载必要的模块:import numpy as npfrom skimage import img_as_floatfrom skimage import io

用python把图片转化为波浪效果

2、读取图片:img=io.imread('0.png')[:,:,:3]得到一个数组,里面的元素都是介于0到255之间的整数。

用python把图片转化为波浪效果

3、把数组里面的数字都除以255,使之称为介于0到1之间的浮点数:img = img_as_float(img)

用python把图片转化为波浪效果

4、查看图片的高度、宽度、通道数:row, col, channel = img.shape也就是行数、列数、通道数。

用python把图片转化为波浪效果

5、锁定图片的中心点:c_x = (col-1)/2.0c_y = (row-1)/2.0

用python把图片转化为波浪效果

6、构造与img行数和列数相同的二维数组:xmk = np.array([list(range(col))]*row像粜杵泳)ymk = np.array([list(range(row))]*col)ymk = np.transpose(ymk)xxd = xmk - c_xyyd = c_y - ymk

用python把图片转化为波浪效果

7、xxd对应的图像:io.imshow(xxd)

用python把图片转化为波浪效果

8、yyd对应的图像。

用python把图片转化为波浪效果

9、对xxd和yyd进行如下处理:x = 20 * np.sin(2 * np.pi * yyd / 70) + xxdy = 20 * np.cos(2 * np.pi * xxd / 30) + yyd下面第一个图是x的图像,第二个图是y的图像。

用python把图片转化为波浪效果
用python把图片转化为波浪效果

10、然后这样处理:xn = x + c_xyn = c_y - y去掉了红颜色区域。

用python把图片转化为波浪效果
用python把图片转化为波浪效果

11、取整,再把数据类型转化为整数:zzx = np.floor (xn).astype(int)zzy = np.floor (yn).astype(int)

用python把图片转化为波浪效果

12、集中成一个数组:for i in range(row): for j in range (col): new_xx = zzx [i, j] new_yy = zzy [i, j] if xn [i, j] < 0 or xn [i, j] > col -1 : continue if yn [i, j] < 0 or yn [i, j] > row -1 : continue img0[i, j, :] = img[new_yy, new_xx, :]把img0导出为图片:io.imsave('1.png',img0)

用python把图片转化为波浪效果
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢