用python把图片转化为波浪效果
1、加载必要的模块:import numpy as npfrom skimage import img_as_floatfrom skimage import io
2、读取图片:img=io.imread('0.png')[:,:,:3]得到一个数组,里面的元素都是介于0到255之间的整数。
3、把数组里面的数字都除以255,使之称为介于0到1之间的浮点数:img = img_as_float(img)
4、查看图片的高度、宽度、通道数:row, col, channel = img.shape也就是行数、列数、通道数。
5、锁定图片的中心点:c_x = (col-1)/2.0c_y = (row-1)/2.0
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
7、xxd对应的图像:io.imshow(xxd)
8、yyd对应的图像。
9、对xxd和yyd进行如下处理:x = 20 * np.sin(2 * np.pi * yyd / 70) + xxdy = 20 * np.cos(2 * np.pi * xxd / 30) + yyd下面第一个图是x的图像,第二个图是y的图像。
10、然后这样处理:xn = x + c_xyn = c_y - y去掉了红颜色区域。
11、取整,再把数据类型转化为整数:zzx = np.floor (xn).astype(int)zzy = np.floor (yn).astype(int)
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)