MCPcopy Create free account
hub / github.com/Vegetebird/GraphMLP / Skeleton

Class Skeleton

common/skeleton.py:3–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1import numpy as np
2
3class Skeleton:
4 def __init__(self, parents, joints_left, joints_right):
5 assert len(joints_left) == len(joints_right)
6
7 self._parents = np.array(parents)
8 self._joints_left = joints_left
9 self._joints_right = joints_right
10 self._compute_metadata()
11
12 def num_joints(self):
13 return len(self._parents)
14
15 def parents(self):
16 return self._parents
17
18 def has_children(self):
19 return self._has_children
20
21 def children(self):
22 return self._children
23
24 def remove_joints(self, joints_to_remove):
25 valid_joints = []
26 for joint in range(len(self._parents)):
27 if joint not in joints_to_remove:
28 valid_joints.append(joint)
29
30 for i in range(len(self._parents)):
31 while self._parents[i] in joints_to_remove:
32 self._parents[i] = self._parents[self._parents[i]]
33
34 index_offsets = np.zeros(len(self._parents), dtype=int)
35 new_parents = []
36 for i, parent in enumerate(self._parents):
37 if i not in joints_to_remove:
38 new_parents.append(parent - index_offsets[parent])
39 else:
40 index_offsets[i:] += 1
41 self._parents = np.array(new_parents)
42
43 if self._joints_left is not None:
44 new_joints_left = []
45 for joint in self._joints_left:
46 if joint in valid_joints:
47 new_joints_left.append(joint - index_offsets[joint])
48 self._joints_left = new_joints_left
49 if self._joints_right is not None:
50 new_joints_right = []
51 for joint in self._joints_right:
52 if joint in valid_joints:
53 new_joints_right.append(joint - index_offsets[joint])
54 self._joints_right = new_joints_right
55
56 self._compute_metadata()
57
58 return valid_joints
59
60 def joints_left(self):

Callers 2

h36m_dataset.pyFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected