效果展示
原始图片:
实现效果:
原理
原理很简单,就是给图片在水平方向上用相邻的像素来填充当前位置
d i s p l a c e m e n t = A sin ? ( 2 π ( x T ? ? ) ) displacement = A \sin (2\pi (\frac{x}{T} - \phi)) \\displacement=Asin(2π(Tx??))
npic = 30 # gif 动图中图片的张数
T = img.shape[1] / nperiod
A = T / 20
for phi in range(npic):
phi/= npic # 每幅图片的相位偏移
I = np.ones_like(img) * img[0,0]
for j in range(I.shape[1]):
displace = int(A*np.sin(2*np.pi*(j/T - phi))) # 偏移量
target = min(max(j+displace,0),I.shape[1]-1) # 防止越界
I[:,j] = img[:,target]
plt.imsave('pic.{:.3f}.jpg'.format(phi), I)
plt.imshow(np.vstack([img,I]))
plt.show()
1234567891011121314151617
最后配合 ps 生成动图 : )
对Python感兴趣的可以添加我的企鹅群,里面有全套学习资料,源码分享:点击链接加入群聊【python交流群】:602697820