n = 5 # the average "window size"
counter = 0 # count how many steps so far
avg = 0. # the average
while True:
# every time step
val = get_keypoint_value_for_this_time_step()
counter += 1
coeff = 1. / min(counter, n)
# update using moving average
avg = coeff * val + (1. - coeff) * avg
print(f'Current time step={val} smothed={avg}')
因为你想要一个类似物理的行为,你可以使用一个简单的物理模型。注意:下面的所有数组都描述了动力学当前状态的属性,因此具有相同的形状(1,2)
定义力 吸引力=(k-p)*定标器
速度 v:速度=v+a
职位 p:当前位置=p+v k:new dl key point=无论dl输出什么
将p输出给用户。请注意,如果您想要更自然的运动,可以使用缩放器或向v添加额外的力(如a)。 此外,要获取所有点,请将p连接到ps,其中ps.shape=(n,2)
最简单的方法是使用移动平均线。您可以非常高效地计算最后
n
步的平均位置,并使用该位置“平滑”轨迹:移动平均线的更多变体可以在here中找到
相关问题 更多 >
编程相关推荐