本文整理汇总了Python中menpo.shape.PointUndirectedGraph.init_from_edges方法的典型用法代码示例。如果您正苦于以下问题:Python PointUndirectedGraph.init_from_edges方法的具体用法?Python PointUndirectedGraph.init_from_edges怎么用?Python PointUndirectedGraph.init_from_edges使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类menpo.shape.PointUndirectedGraph
的用法示例。
在下文中一共展示了PointUndirectedGraph.init_from_edges方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: eye_ibug_close_17_to_eye_ibug_close_17
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def eye_ibug_close_17_to_eye_ibug_close_17(pcloud):
r"""
Apply the IBUG 17-point close eye semantic labels.
The semantic labels applied are as follows:
- upper_eyelid
- lower_eyelid
"""
from menpo.shape import PointUndirectedGraph
n_expected_points = 17
validate_input(pcloud, n_expected_points)
upper_indices, upper_connectivity = _build_upper_eyelid()
middle_indices = np.arange(12, 17)
bottom_indices = np.arange(6, 12)
lower_indices = np.hstack((bottom_indices, 0, middle_indices))
lower_connectivity = list(zip(bottom_indices, bottom_indices[1:]))
lower_connectivity += [(0, 12)]
lower_connectivity += list(zip(middle_indices, middle_indices[1:]))
lower_connectivity += [(11, 0)]
all_connectivity = np.asarray(upper_connectivity + lower_connectivity)
new_pcloud = PointUndirectedGraph.init_from_edges(pcloud.points,
all_connectivity)
mapping = OrderedDict()
mapping['upper_eyelid'] = upper_indices
mapping['lower_eyelid'] = lower_indices
return new_pcloud, mapping
示例2: car_streetscene_20_to_car_streetscene_view_5_10
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def car_streetscene_20_to_car_streetscene_view_5_10(pcloud):
r"""
Apply the 10-point semantic labels of "view 5" from the MIT Street Scene
Car dataset (originally a 20-point markup).
The semantic labels applied are as follows:
- right_side
References
----------
.. [1] http://www.cs.cmu.edu/~vboddeti/alignment.html
"""
from menpo.shape import PointUndirectedGraph
n_expected_points = 20
validate_input(pcloud, n_expected_points)
right_side_indices = np.array([0, 1, 2, 3, 4, 5, 6, 7, 9, 8])
right_side_connectivity = connectivity_from_array(right_side_indices,
close_loop=True)
all_connectivity = right_side_connectivity
ind = np.array([1, 3, 5, 7, 9, 11, 13, 15, 17, 19])
new_pcloud = PointUndirectedGraph.init_from_edges(pcloud.points[ind],
all_connectivity)
mapping = OrderedDict()
mapping['right_side'] = right_side_indices
return new_pcloud, mapping
示例3: face_ibug_49_to_face_ibug_49
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def face_ibug_49_to_face_ibug_49(pcloud):
r"""
Apply the IBUG 49-point semantic labels.
The semantic labels applied are as follows:
- left_eyebrow
- right_eyebrow
- nose
- left_eye
- right_eye
- mouth
References
----------
.. [1] http://www.multipie.org/
.. [2] http://ibug.doc.ic.ac.uk/resources/300-W/
"""
from menpo.shape import PointUndirectedGraph
n_expected_points = 49
validate_input(pcloud, n_expected_points)
lbrow_indices = np.arange(0, 5)
rbrow_indices = np.arange(5, 10)
upper_nose_indices = np.arange(10, 14)
lower_nose_indices = np.arange(14, 19)
leye_indices = np.arange(19, 25)
reye_indices = np.arange(25, 31)
outer_mouth_indices = np.arange(31, 43)
inner_mouth_indices = np.hstack((31, np.arange(43, 46),
37, np.arange(46, 49)))
lbrow_connectivity = connectivity_from_array(lbrow_indices)
rbrow_connectivity = connectivity_from_array(rbrow_indices)
nose_connectivity = np.vstack([
connectivity_from_array(upper_nose_indices),
connectivity_from_array(lower_nose_indices)])
leye_connectivity = connectivity_from_array(leye_indices, close_loop=True)
reye_connectivity = connectivity_from_array(reye_indices, close_loop=True)
mouth_connectivity = np.vstack([
connectivity_from_array(outer_mouth_indices, close_loop=True),
connectivity_from_array(inner_mouth_indices, close_loop=True)])
all_connectivity = np.vstack([
lbrow_connectivity, rbrow_connectivity, nose_connectivity,
leye_connectivity, reye_connectivity, mouth_connectivity])
# Ignore the two inner mouth points
new_pcloud = PointUndirectedGraph.init_from_edges(pcloud.points,
all_connectivity)
mapping = OrderedDict()
mapping['left_eyebrow'] = lbrow_indices
mapping['right_eyebrow'] = rbrow_indices
mapping['nose'] = np.hstack([upper_nose_indices, lower_nose_indices])
mapping['left_eye'] = leye_indices
mapping['right_eye'] = reye_indices
mapping['mouth'] = np.hstack([outer_mouth_indices, inner_mouth_indices])
return new_pcloud, mapping
示例4: eye_ibug_open_38_to_eye_ibug_open_38
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def eye_ibug_open_38_to_eye_ibug_open_38(pcloud):
r"""
Apply the IBUG 38-point open eye semantic labels.
The semantic labels applied are as follows:
- upper_eyelid
- lower_eyelid
- iris
- pupil
- sclera
"""
from menpo.shape import PointUndirectedGraph
n_expected_points = 38
validate_input(pcloud, n_expected_points)
upper_el_indices, upper_el_connectivity = _build_upper_eyelid()
iris_range = (22, 30)
pupil_range = (30, 38)
sclera_top = np.arange(12, 17)
sclera_bottom = np.arange(17, 22)
sclera_indices = np.hstack((0, sclera_top, 6, sclera_bottom))
lower_el_top = np.arange(17, 22)
lower_el_bottom = np.arange(7, 12)
lower_el_indices = np.hstack((6, lower_el_top, 0, lower_el_bottom))
iris_connectivity = connectivity_from_range(iris_range, close_loop=True)
pupil_connectivity = connectivity_from_range(pupil_range, close_loop=True)
sclera_connectivity = list(zip(sclera_top, sclera_top[1:]))
sclera_connectivity += [(0, 21)]
sclera_connectivity += list(zip(sclera_bottom, sclera_bottom[1:]))
sclera_connectivity += [(6, 17)]
lower_el_connectivity = list(zip(lower_el_top, lower_el_top[1:]))
lower_el_connectivity += [(6, 7)]
lower_el_connectivity += list(zip(lower_el_bottom, lower_el_bottom[1:]))
lower_el_connectivity += [(11, 0)]
all_connectivity = np.asarray(upper_el_connectivity +
lower_el_connectivity +
iris_connectivity.tolist() +
pupil_connectivity.tolist() +
sclera_connectivity)
new_pcloud = PointUndirectedGraph.init_from_edges(pcloud.points,
all_connectivity)
mapping = OrderedDict()
mapping['upper_eyelid'] = upper_el_indices
mapping['lower_eyelid'] = lower_el_indices
mapping['pupil'] = np.arange(*pupil_range)
mapping['iris'] = np.arange(*iris_range)
mapping['sclera'] = sclera_indices
return new_pcloud, mapping
示例5: hand_ibug_39_to_hand_ibug_39
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
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 PointUndirectedGraph
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])
new_pcloud = PointUndirectedGraph.init_from_edges(pcloud.points,
all_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
return new_pcloud, mapping
示例6: car_streetscene_20_to_car_streetscene_view_1_14
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def car_streetscene_20_to_car_streetscene_view_1_14(pcloud):
"""
Apply the 14-point semantic labels of "view 1" from the MIT Street Scene
Car dataset (originally a 20-point markup).
The semantic labels applied are as follows:
- front
- bonnet
- windshield
- left_side
References
----------
.. [1] http://www.cs.cmu.edu/~vboddeti/alignment.html
"""
from menpo.shape import PointUndirectedGraph
n_expected_points = 20
validate_input(pcloud, n_expected_points)
front_indices = np.array([0, 1, 3, 2])
bonnet_indices = np.array([2, 3, 5, 4])
windshield_indices = np.array([4, 5, 7, 6])
left_side_indices = np.array([0, 2, 4, 6, 8, 9, 10, 11, 13, 12])
front_connectivity = connectivity_from_array(front_indices,
close_loop=True)
bonnet_connectivity = connectivity_from_array(bonnet_indices,
close_loop=True)
windshield_connectivity = connectivity_from_array(windshield_indices,
close_loop=True)
left_side_connectivity = connectivity_from_array(left_side_indices,
close_loop=True)
all_connectivity = np.vstack([
front_connectivity, bonnet_connectivity, windshield_connectivity,
left_side_connectivity
])
ind = np.hstack((np.arange(9), np.array([10, 12, 14, 16, 18])))
new_pcloud = PointUndirectedGraph.init_from_edges(pcloud.points[ind],
all_connectivity)
mapping = OrderedDict()
mapping['front'] = front_indices
mapping['bonnet'] = bonnet_indices
mapping['windshield'] = windshield_indices
mapping['left_side'] = left_side_indices
return new_pcloud, mapping
示例7: test_init_from_edges
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def test_init_from_edges():
g = PointDirectedGraph.init_from_edges(
points, np.array([[1, 0], [2, 0], [1, 2], [2, 1], [1, 3], [2, 4],
[3, 4], [3, 5]]))
assert (pg_directed.adjacency_matrix - g.adjacency_matrix).nnz == 0
g = PointUndirectedGraph.init_from_edges(
points, np.array([[0, 1], [0, 2], [1, 2], [1, 3], [2, 4], [3, 4],
[3, 5]]))
assert (pg_undirected.adjacency_matrix - g.adjacency_matrix).nnz == 0
g = PointUndirectedGraph.init_from_edges(
points, np.array([[0, 1], [1, 0], [0, 2], [2, 0], [1, 2], [2, 1],
[1, 3], [3, 1], [2, 4], [4, 2], [3, 4], [4, 3],
[3, 5], [5, 3]]))
assert (pg_undirected.adjacency_matrix - g.adjacency_matrix).nnz == 0
g = PointTree.init_from_edges(
points2, np.array([[0, 1], [0, 2], [1, 3], [1, 4], [2, 5], [3, 6],
[4, 7], [5, 8]]), root_vertex=0)
assert (pg_tree.adjacency_matrix - g.adjacency_matrix).nnz == 0
g = PointUndirectedGraph.init_from_edges(
points, np.array([[0, 2], [2, 4], [3, 4]]))
assert (pg_isolated.adjacency_matrix - g.adjacency_matrix).nnz == 0
g = PointDirectedGraph.init_from_edges(point, np.array([]))
assert (pg_single.adjacency_matrix - g.adjacency_matrix).nnz == 0
示例8: pose_lsp_14_to_pose_lsp_14
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def pose_lsp_14_to_pose_lsp_14(pcloud):
r"""
Apply the lsp 14-point semantic labels.
The semantic labels applied are as follows:
- left_leg
- right_leg
- left_arm
- right_arm
- head
References
----------
.. [1] http://www.comp.leeds.ac.uk/mat4saj/lsp.html
"""
from menpo.shape import PointUndirectedGraph
n_expected_points = 14
validate_input(pcloud, n_expected_points)
left_leg_indices = np.arange(0, 3)
right_leg_indices = np.arange(3, 6)
left_arm_indices = np.arange(6, 9)
right_arm_indices = np.arange(9, 12)
head_indices = np.arange(12, 14)
left_leg_connectivity = connectivity_from_array(left_leg_indices)
right_leg_connectivity = connectivity_from_array(right_leg_indices)
left_arm_connectivity = connectivity_from_array(left_arm_indices)
right_arm_connectivity = connectivity_from_array(right_arm_indices)
head_connectivity = connectivity_from_array(head_indices)
all_connectivity = np.vstack([
left_leg_connectivity, right_leg_connectivity,
left_arm_connectivity, right_arm_connectivity,
head_connectivity
])
new_pcloud = PointUndirectedGraph.init_from_edges(pcloud.points,
all_connectivity)
mapping = OrderedDict()
mapping['left_leg'] = left_leg_indices
mapping['right_leg'] = right_leg_indices
mapping['left_arm'] = left_arm_indices
mapping['right_arm'] = right_arm_indices
mapping['head'] = head_indices
return new_pcloud, mapping
示例9: car_streetscene_20_to_car_streetscene_view_6_14
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def car_streetscene_20_to_car_streetscene_view_6_14(pcloud):
r"""
Apply the 14-point semantic labels of "view 6" from the MIT Street Scene
Car dataset (originally a 20-point markup).
The semantic labels applied are as follows:
- right_side
- rear_windshield
- trunk
- rear
References
----------
.. [1] http://www.cs.cmu.edu/~vboddeti/alignment.html
"""
from menpo.shape import PointUndirectedGraph
n_expected_points = 20
validate_input(pcloud, n_expected_points)
right_side_indices = np.array([0, 1, 2, 3, 5, 7, 9, 11, 13, 12])
rear_windshield_indices = np.array([4, 5, 7, 6])
trunk_indices = np.array([6, 7, 9, 8])
rear_indices = np.array([8, 9, 11, 10])
right_side_connectivity = connectivity_from_array(right_side_indices,
close_loop=True)
rear_windshield_connectivity = connectivity_from_array(
rear_windshield_indices, close_loop=True)
trunk_connectivity = connectivity_from_array(trunk_indices, close_loop=True)
rear_connectivity = connectivity_from_array(rear_indices, close_loop=True)
all_connectivity = np.vstack([
right_side_connectivity, rear_windshield_connectivity,
trunk_connectivity, rear_connectivity
])
ind = np.array([1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19])
new_pcloud = PointUndirectedGraph.init_from_edges(pcloud.points[ind],
all_connectivity)
mapping = OrderedDict()
mapping['right_side'] = right_side_indices
mapping['rear_windshield'] = rear_windshield_indices
mapping['trunk'] = trunk_indices
mapping['rear'] = rear_indices
return new_pcloud, mapping
示例10: pcloud_and_lgroup_from_ranges
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def pcloud_and_lgroup_from_ranges(pointcloud, labels_to_ranges):
"""
Label the given pointcloud according to the given ordered dictionary
of labels to ranges. This assumes that you can semantically label the group
by using ranges in to the existing points e.g ::
labels_to_ranges = {'jaw': (0, 17, False)}
The third element of the range tuple is whether the range is a closed loop
or not. For example, for an eye landmark this would be ``True``, as you
do want to create a closed loop for an eye.
Parameters
----------
pointcloud : :map:`PointCloud`
The pointcloud to apply semantic labels to.
labels_to_ranges : `ordereddict` {`str` -> (`int`, `int`, `bool`)}
Ordered dictionary of string labels to range tuples.
Returns
-------
new_pcloud : :map:`PointCloud`
New pointcloud with specific connectivity information applied.
mapping : `ordereddict` {`str` -> `int ndarray`}
For each label, the indices in to the pointcloud that belong to the
label.
"""
from menpo.shape import PointUndirectedGraph
mapping = OrderedDict()
all_connectivity = []
for label, tup in labels_to_ranges.items():
range_tuple = tup[:-1]
close_loop = tup[-1]
connectivity = connectivity_from_range(range_tuple,
close_loop=close_loop)
all_connectivity.append(connectivity)
mapping[label] = np.arange(*range_tuple)
all_connectivity = np.vstack(all_connectivity)
new_pcloud = PointUndirectedGraph.init_from_edges(pointcloud.points,
all_connectivity)
return new_pcloud, mapping
示例11: _parse_ljson_v2
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def _parse_ljson_v2(lms_dict):
labels_to_mask = OrderedDict() # masks into the full pointcloud per label
points = _ljson_parse_null_values(lms_dict['landmarks']['points'])
connectivity = lms_dict['landmarks'].get('connectivity')
# Don't create a PointUndirectedGraph with no connectivity
if connectivity is None or len(connectivity) == 0:
pcloud = PointCloud(points)
else:
pcloud = PointUndirectedGraph.init_from_edges(points, connectivity)
for label in lms_dict['labels']:
mask = np.zeros(pcloud.n_points, dtype=np.bool)
mask[label['mask']] = True
labels_to_mask[label['label']] = mask
return pcloud, labels_to_mask
示例12: face_ibug_68_to_face_ibug_65
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def face_ibug_68_to_face_ibug_65(pcloud):
r"""
Apply the IBUG 68 point semantic labels, but ignore the 3 points that are
coincident for a closed mouth (bottom of the inner mouth).
The semantic labels applied are as follows:
- jaw
- left_eyebrow
- right_eyebrow
- nose
- left_eye
- right_eye
- mouth
References
----------
.. [1] http://www.multipie.org/
.. [2] http://ibug.doc.ic.ac.uk/resources/300-W/
"""
from menpo.shape import PointUndirectedGraph
# Apply face_ibug_68_to_face_ibug_68
new_pcloud, mapping = face_ibug_68_to_face_ibug_68(pcloud,
return_mapping=True)
# The coincident points are considered the final 3 landmarks (bottom of
# the inner mouth points). We remove all the edges for the inner mouth
# which are the last 8.
edges = new_pcloud.edges[:-8]
# Re-add the inner mouth without the bottom 3 points
edges = np.vstack([edges,
connectivity_from_range((60, 65), close_loop=True)])
new_pcloud = PointUndirectedGraph.init_from_edges(
new_pcloud.points[:-3], edges)
# Luckily, OrderedDict maintains the original ordering despite updates
outer_mouth_indices = np.arange(48, 60)
inner_mouth_indices = np.arange(60, 65)
mapping['mouth'] = np.hstack([outer_mouth_indices, inner_mouth_indices])
return new_pcloud, mapping
示例13: _parse_ljson_v1
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def _parse_ljson_v1(lms_dict):
from menpo.base import MenpoDeprecationWarning
warnings.warn(
"LJSON v1 is deprecated. export_landmark_file{s}() will "
"only save out LJSON v2 files. Please convert all LJSON "
"files to v2 by importing into Menpo and re-exporting to "
"overwrite the files.",
MenpoDeprecationWarning,
)
all_points = []
labels = [] # label per group
labels_slices = [] # slices into the full pointcloud per label
offset = 0
connectivity = []
for group in lms_dict["groups"]:
lms = group["landmarks"]
labels.append(group["label"])
labels_slices.append(slice(offset, len(lms) + offset))
# Create the connectivity if it exists
conn = group.get("connectivity", [])
if conn:
# Offset relative connectivity according to the current index
conn = offset + np.asarray(conn)
connectivity += conn.tolist()
for p in lms:
all_points.append(p["point"])
offset += len(lms)
# Don't create a PointUndirectedGraph with no connectivity
points = _ljson_parse_null_values(all_points)
if len(connectivity) == 0:
pcloud = PointCloud(points)
else:
pcloud = PointUndirectedGraph.init_from_edges(points, connectivity)
labels_to_masks = OrderedDict()
# go through each label and build the appropriate boolean array
for label, l_slice in zip(labels, labels_slices):
mask = np.zeros(pcloud.n_points, dtype=np.bool)
mask[l_slice] = True
labels_to_masks[label] = mask
return pcloud, labels_to_masks
示例14: face_ibug_68_to_face_ibug_68
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def face_ibug_68_to_face_ibug_68(pcloud):
r"""
Apply the IBUG 68-point semantic labels.
The semantic labels are as follows:
- jaw
- left_eyebrow
- right_eyebrow
- nose
- left_eye
- right_eye
- mouth
References
----------
.. [1] http://www.multipie.org/
.. [2] http://ibug.doc.ic.ac.uk/resources/300-W/
"""
from menpo.shape import PointUndirectedGraph
n_expected_points = 68
validate_input(pcloud, n_expected_points)
jaw_indices = np.arange(0, 17)
lbrow_indices = np.arange(17, 22)
rbrow_indices = np.arange(22, 27)
upper_nose_indices = np.arange(27, 31)
lower_nose_indices = np.arange(31, 36)
leye_indices = np.arange(36, 42)
reye_indices = np.arange(42, 48)
outer_mouth_indices = np.arange(48, 60)
inner_mouth_indices = np.arange(60, 68)
jaw_connectivity = connectivity_from_array(jaw_indices)
lbrow_connectivity = connectivity_from_array(lbrow_indices)
rbrow_connectivity = connectivity_from_array(rbrow_indices)
nose_connectivity = np.vstack([
connectivity_from_array(upper_nose_indices),
connectivity_from_array(lower_nose_indices)])
leye_connectivity = connectivity_from_array(leye_indices, close_loop=True)
reye_connectivity = connectivity_from_array(reye_indices, close_loop=True)
mouth_connectivity = np.vstack([
connectivity_from_array(outer_mouth_indices, close_loop=True),
connectivity_from_array(inner_mouth_indices, close_loop=True)])
all_connectivity = np.vstack([
jaw_connectivity, lbrow_connectivity, rbrow_connectivity,
nose_connectivity, leye_connectivity, reye_connectivity,
mouth_connectivity
])
new_pcloud = PointUndirectedGraph.init_from_edges(
pcloud.points, all_connectivity)
mapping = OrderedDict()
mapping['jaw'] = jaw_indices
mapping['left_eyebrow'] = lbrow_indices
mapping['right_eyebrow'] = rbrow_indices
mapping['nose'] = np.hstack((upper_nose_indices, lower_nose_indices))
mapping['left_eye'] = leye_indices
mapping['right_eye'] = reye_indices
mapping['mouth'] = np.hstack((outer_mouth_indices, inner_mouth_indices))
return new_pcloud, mapping
示例15: pose_human36M_32_to_pose_human36M_17
# 需要导入模块: from menpo.shape import PointUndirectedGraph [as 别名]
# 或者: from menpo.shape.PointUndirectedGraph import init_from_edges [as 别名]
def pose_human36M_32_to_pose_human36M_17(pcloud):
r"""
Apply the human3.6M 17-point semantic labels (based on the
original semantic labels of Human3.6 but removing the annotations
corresponding to duplicate points, soles and palms), originally 32-points.
The semantic labels applied are as follows:
- pelvis
- right_leg
- left_leg
- spine
- head
- left_arm
- right_arm
- torso
References
----------
.. [1] http://vision.imar.ro/human3.6m/
"""
from menpo.shape import PointUndirectedGraph
n_expected_points = 32
validate_input(pcloud, n_expected_points)
pelvis_indices = np.array([1, 0, 4])
right_leg_indices = np.arange(1, 4)
left_leg_indices = np.arange(4, 7)
spine_indices = np.array([0, 7, 8])
head_indices = np.array([8, 9, 10])
left_arm_indices = np.array([8, 11, 12, 13])
right_arm_indices = np.array([8, 14, 15, 16])
torso_indices = np.array([0, 1, 14, 8, 11, 4])
pelvis_connectivity = connectivity_from_array(pelvis_indices)
right_leg_connectivity = connectivity_from_array(right_leg_indices)
left_leg_connectivity = connectivity_from_array(left_leg_indices)
spine_connectivity = connectivity_from_array(spine_indices)
head_connectivity = connectivity_from_array(head_indices)
left_arm_connectivity = connectivity_from_array(left_arm_indices)
right_arm_connectivity = connectivity_from_array(right_arm_indices)
torso_connectivity = connectivity_from_array(torso_indices,
close_loop=True)
all_connectivity = np.vstack([
pelvis_connectivity, right_leg_connectivity, left_leg_connectivity,
spine_connectivity, head_connectivity, left_arm_connectivity,
right_arm_connectivity, torso_connectivity
])
# Ignore duplicate points, sole and palms
ind = np.hstack([np.arange(0, 4), np.arange(6, 9), np.arange(12, 16),
np.arange(17, 20), np.arange(25, 28)])
new_pcloud = PointUndirectedGraph.init_from_edges(
pcloud.points[ind], all_connectivity)
mapping = OrderedDict()
mapping['pelvis'] = pelvis_indices
mapping['right_leg'] = right_leg_indices
mapping['left_leg'] = left_leg_indices
mapping['spine'] = spine_indices
mapping['head'] = head_indices
mapping['left_arm'] = left_arm_indices
mapping['right_arm'] = right_arm_indices
mapping['torso'] = torso_indices
return new_pcloud, mapping