29 lines
736 B
Python
29 lines
736 B
Python
"""Runtime pose geometry helpers."""
|
|
from __future__ import annotations
|
|
import numpy as np
|
|
|
|
|
|
HAND_EDGES_LOCAL = (
|
|
(0, 1), (1, 2), (2, 3), (3, 4),
|
|
(0, 5), (5, 6), (6, 7), (7, 8),
|
|
(0, 9), (9, 10), (10, 11), (11, 12),
|
|
(0, 13), (13, 14), (14, 15), (15, 16),
|
|
(0, 17), (17, 18), (18, 19), (19, 20),
|
|
)
|
|
|
|
|
|
HAND_SLICES = {"left": (91, 112), "right": (112, 133)}
|
|
|
|
|
|
BODY_WRISTS = {"left": 9, "right": 10}
|
|
|
|
|
|
def normalized_keypoints(kpts: np.ndarray, bbox: list[float]) -> np.ndarray:
|
|
x1, y1, x2, y2 = bbox
|
|
width = max(x2 - x1, 1.0)
|
|
height = max(y2 - y1, 1.0)
|
|
result = kpts.copy().astype(np.float64)
|
|
result[:, 0] = (result[:, 0] - x1) / width
|
|
result[:, 1] = (result[:, 1] - y1) / height
|
|
return result
|