File size: 1,285 Bytes
a090915 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
import numpy as np
def calc_avg_speed(prev_poses: list, current_poses: list) -> float:
if not prev_poses or not current_poses:
return 0.0
prev_poses = np.array(prev_poses)
current_poses = np.array(current_poses)
if prev_poses.shape != current_poses.shape:
return 0.0
displacement = np.linalg.norm(current_poses - prev_poses, axis=2)
return float(np.mean(displacement))
def calc_motion_intensity(prev_poses: list, current_poses: list) -> float:
if not prev_poses or not current_poses:
return 0.0
prev_poses = np.array(prev_poses)
current_poses = np.array(current_poses)
if prev_poses.shape != current_poses.shape:
return 0.0
displacement = np.linalg.norm(current_poses - prev_poses, axis=2)
return float(np.std(displacement))
def calc_sudden_movements(prev_poses: list, current_poses: list) -> int:
if not prev_poses or not current_poses:
return 0
prev_poses = np.array(prev_poses)
current_poses = np.array(current_poses)
if prev_poses.shape != current_poses.shape:
return 0
displacement = np.linalg.norm(current_poses - prev_poses, axis=2)
threshold = np.mean(displacement) + 2 * np.std(displacement)
return int(np.sum(displacement > threshold))
|