[c1b1c5]: / ViTPose / tests / test_visualization.py

Download this file

100 lines (86 with data), 3.0 kB

 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# Copyright (c) OpenMMLab. All rights reserved.
import tempfile
import mmcv
import numpy as np
import pytest
from mmpose.core import (apply_bugeye_effect, apply_sunglasses_effect,
imshow_bboxes, imshow_keypoints, imshow_keypoints_3d)
def test_imshow_keypoints():
# 2D keypoint
img = np.zeros((100, 100, 3), dtype=np.uint8)
kpts = np.array([[1, 1, 1], [10, 10, 1]], dtype=np.float32)
pose_result = [kpts]
skeleton = [[0, 1]]
pose_kpt_color = [(127, 127, 127)] * len(kpts)
pose_link_color = [(127, 127, 127)] * len(skeleton)
img_vis_2d = imshow_keypoints(
img,
pose_result,
skeleton=skeleton,
pose_kpt_color=pose_kpt_color,
pose_link_color=pose_link_color,
show_keypoint_weight=True)
# 3D keypoint
kpts_3d = np.array([[0, 0, 0, 1], [1, 1, 1, 1]], dtype=np.float32)
pose_result_3d = [{'keypoints_3d': kpts_3d, 'title': 'test'}]
_ = imshow_keypoints_3d(
pose_result_3d,
img=img_vis_2d,
skeleton=skeleton,
pose_kpt_color=pose_kpt_color,
pose_link_color=pose_link_color,
vis_height=400)
def test_imshow_bbox():
img = np.zeros((100, 100, 3), dtype=np.uint8)
bboxes = np.array([[10, 10, 30, 30], [10, 50, 30, 80]], dtype=np.float32)
labels = ['label 1', 'label 2']
colors = ['red', 'green']
with tempfile.TemporaryDirectory() as tmpdir:
_ = imshow_bboxes(
img,
bboxes,
labels=labels,
colors=colors,
show=False,
out_file=f'{tmpdir}/out.png')
# test case of empty bboxes
_ = imshow_bboxes(
img,
np.zeros((0, 4), dtype=np.float32),
labels=None,
colors='red',
show=False)
# test unmatched bboxes and labels
with pytest.raises(AssertionError):
_ = imshow_bboxes(
img,
np.zeros((0, 4), dtype=np.float32),
labels=labels[:1],
colors='red',
show=False)
def test_effects():
img = np.zeros((100, 100, 3), dtype=np.uint8)
kpts = np.array([[10., 10., 0.8], [20., 10., 0.8]], dtype=np.float32)
bbox = np.array([0, 0, 50, 50], dtype=np.float32)
pose_results = [dict(bbox=bbox, keypoints=kpts)]
# sunglasses
sunglasses_img = mmcv.imread('demo/resources/sunglasses.jpg')
_ = apply_sunglasses_effect(
img,
pose_results,
sunglasses_img,
left_eye_index=1,
right_eye_index=0,
kpt_thr=0.5)
_ = apply_sunglasses_effect(
img,
pose_results,
sunglasses_img,
left_eye_index=1,
right_eye_index=0,
kpt_thr=0.9)
# bug-eye
_ = apply_bugeye_effect(
img, pose_results, left_eye_index=1, right_eye_index=0, kpt_thr=0.5)
_ = apply_bugeye_effect(
img, pose_results, left_eye_index=1, right_eye_index=0, kpt_thr=0.9)