Source code for menpo.landmark.labels.human.hand

from collections import OrderedDict
import numpy as np

from ..base import validate_input, connectivity_from_array, labeller_func


[docs]@labeller_func(group_label="hand_ibug_39") def hand_ibug_39_to_hand_ibug_39(pcloud): r""" Apply the IBUG 39-point semantic labels. The semantic labels applied are as follows: - thumb - index - middle - ring - pinky - palm """ from menpo.shape import LabelledPointUndirectedGraph n_expected_points = 39 validate_input(pcloud, n_expected_points) thumb_indices = np.arange(0, 5) index_indices = np.arange(5, 12) middle_indices = np.arange(12, 19) ring_indices = np.arange(19, 26) pinky_indices = np.arange(26, 33) palm_indices = np.hstack((np.array([32, 25, 18, 11, 33, 34, 4]), np.arange(35, 39))) thumb_connectivity = connectivity_from_array(thumb_indices, close_loop=False) index_connectivity = connectivity_from_array(index_indices, close_loop=False) middle_connectivity = connectivity_from_array(middle_indices, close_loop=False) ring_connectivity = connectivity_from_array(ring_indices, close_loop=False) pinky_connectivity = connectivity_from_array(pinky_indices, close_loop=False) palm_connectivity = connectivity_from_array(palm_indices, close_loop=True) all_connectivity = np.vstack( [ thumb_connectivity, index_connectivity, middle_connectivity, ring_connectivity, pinky_connectivity, palm_connectivity, ] ) mapping = OrderedDict() mapping["thumb"] = thumb_indices mapping["index"] = index_indices mapping["middle"] = middle_indices mapping["ring"] = ring_indices mapping["pinky"] = pinky_indices mapping["palm"] = palm_indices new_pcloud = LabelledPointUndirectedGraph.init_from_indices_mapping( pcloud.points, all_connectivity, mapping ) return new_pcloud, mapping