我是靠谱客的博主 昏睡哑铃,最近开发中收集的这篇文章主要介绍python 舞动的文字(一)效果展示原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

效果展示

原始图片:
在这里插入图片描述
实现效果:

  • nperiod = 1, npic = 10
    在这里插入图片描述

  • nperiod = 10, npic = 30
    在这里插入图片描述

原理

原理很简单,就是在竖直方向上给图片加一个正弦曲线的偏移量
d i s p l a c e m e n t = H 3 sin ⁡ ( 2 π ( x W / nperiod + ϕ ) ) displacement = frac{H}{3} sin (2pi (frac{x}{W/text{nperiod}}+phi)) displacement=3Hsin(2π(W/nperiodx+ϕ))
其中 W , H W, H W,H 是原始图片的宽和高, ϕ phi ϕ 表示相位

T = img.shape[1]
A = img.shape[0] // 3
displace = int(A*np.sin(2*np.pi*(j/(T/nperiod) + phi)))

主要调控的参数为:

  • nperiod: 正弦曲线在图片内的周期数
  • npic : gif 动图中图片的张数
img = cv2.imread('logo.jpg')
img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)

nperiod = 10
npic = 30
for phi in range(npic):
    phi/= npic  # 每幅图片的相位偏移
    I = np.ones_like(img) * img[0,0]
    for j in range(T):
        displace = int(A*np.sin(2*np.pi*(j/(T/nperiod) + phi)))
        if displace > 0:
            I[:img.shape[0]-displace,j] = img[displace-img.shape[0]:,j]
        elif displace < 0:
            I[-displace:,j] = img[:displace+img.shape[0],j]
        else:
            I[:,j] = img[:,j]
    plt.imsave('pic.{:.3f}.jpg'.format(phi), I)

每一帧的图片如下:
在这里插入图片描述
最后配合 ps 生成动图 : )

最后

以上就是昏睡哑铃为你收集整理的python 舞动的文字(一)效果展示原理的全部内容,希望文章能够帮你解决python 舞动的文字(一)效果展示原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部