|
a |
|
b/ViTPose/tests/test_visualization.py |
|
|
1 |
# Copyright (c) OpenMMLab. All rights reserved. |
|
|
2 |
import tempfile |
|
|
3 |
|
|
|
4 |
import mmcv |
|
|
5 |
import numpy as np |
|
|
6 |
import pytest |
|
|
7 |
|
|
|
8 |
from mmpose.core import (apply_bugeye_effect, apply_sunglasses_effect, |
|
|
9 |
imshow_bboxes, imshow_keypoints, imshow_keypoints_3d) |
|
|
10 |
|
|
|
11 |
|
|
|
12 |
def test_imshow_keypoints(): |
|
|
13 |
# 2D keypoint |
|
|
14 |
img = np.zeros((100, 100, 3), dtype=np.uint8) |
|
|
15 |
kpts = np.array([[1, 1, 1], [10, 10, 1]], dtype=np.float32) |
|
|
16 |
pose_result = [kpts] |
|
|
17 |
skeleton = [[0, 1]] |
|
|
18 |
pose_kpt_color = [(127, 127, 127)] * len(kpts) |
|
|
19 |
pose_link_color = [(127, 127, 127)] * len(skeleton) |
|
|
20 |
img_vis_2d = imshow_keypoints( |
|
|
21 |
img, |
|
|
22 |
pose_result, |
|
|
23 |
skeleton=skeleton, |
|
|
24 |
pose_kpt_color=pose_kpt_color, |
|
|
25 |
pose_link_color=pose_link_color, |
|
|
26 |
show_keypoint_weight=True) |
|
|
27 |
|
|
|
28 |
# 3D keypoint |
|
|
29 |
kpts_3d = np.array([[0, 0, 0, 1], [1, 1, 1, 1]], dtype=np.float32) |
|
|
30 |
pose_result_3d = [{'keypoints_3d': kpts_3d, 'title': 'test'}] |
|
|
31 |
_ = imshow_keypoints_3d( |
|
|
32 |
pose_result_3d, |
|
|
33 |
img=img_vis_2d, |
|
|
34 |
skeleton=skeleton, |
|
|
35 |
pose_kpt_color=pose_kpt_color, |
|
|
36 |
pose_link_color=pose_link_color, |
|
|
37 |
vis_height=400) |
|
|
38 |
|
|
|
39 |
|
|
|
40 |
def test_imshow_bbox(): |
|
|
41 |
img = np.zeros((100, 100, 3), dtype=np.uint8) |
|
|
42 |
bboxes = np.array([[10, 10, 30, 30], [10, 50, 30, 80]], dtype=np.float32) |
|
|
43 |
labels = ['label 1', 'label 2'] |
|
|
44 |
colors = ['red', 'green'] |
|
|
45 |
|
|
|
46 |
with tempfile.TemporaryDirectory() as tmpdir: |
|
|
47 |
_ = imshow_bboxes( |
|
|
48 |
img, |
|
|
49 |
bboxes, |
|
|
50 |
labels=labels, |
|
|
51 |
colors=colors, |
|
|
52 |
show=False, |
|
|
53 |
out_file=f'{tmpdir}/out.png') |
|
|
54 |
|
|
|
55 |
# test case of empty bboxes |
|
|
56 |
_ = imshow_bboxes( |
|
|
57 |
img, |
|
|
58 |
np.zeros((0, 4), dtype=np.float32), |
|
|
59 |
labels=None, |
|
|
60 |
colors='red', |
|
|
61 |
show=False) |
|
|
62 |
|
|
|
63 |
# test unmatched bboxes and labels |
|
|
64 |
with pytest.raises(AssertionError): |
|
|
65 |
_ = imshow_bboxes( |
|
|
66 |
img, |
|
|
67 |
np.zeros((0, 4), dtype=np.float32), |
|
|
68 |
labels=labels[:1], |
|
|
69 |
colors='red', |
|
|
70 |
show=False) |
|
|
71 |
|
|
|
72 |
|
|
|
73 |
def test_effects(): |
|
|
74 |
img = np.zeros((100, 100, 3), dtype=np.uint8) |
|
|
75 |
kpts = np.array([[10., 10., 0.8], [20., 10., 0.8]], dtype=np.float32) |
|
|
76 |
bbox = np.array([0, 0, 50, 50], dtype=np.float32) |
|
|
77 |
pose_results = [dict(bbox=bbox, keypoints=kpts)] |
|
|
78 |
# sunglasses |
|
|
79 |
sunglasses_img = mmcv.imread('demo/resources/sunglasses.jpg') |
|
|
80 |
_ = apply_sunglasses_effect( |
|
|
81 |
img, |
|
|
82 |
pose_results, |
|
|
83 |
sunglasses_img, |
|
|
84 |
left_eye_index=1, |
|
|
85 |
right_eye_index=0, |
|
|
86 |
kpt_thr=0.5) |
|
|
87 |
_ = apply_sunglasses_effect( |
|
|
88 |
img, |
|
|
89 |
pose_results, |
|
|
90 |
sunglasses_img, |
|
|
91 |
left_eye_index=1, |
|
|
92 |
right_eye_index=0, |
|
|
93 |
kpt_thr=0.9) |
|
|
94 |
|
|
|
95 |
# bug-eye |
|
|
96 |
_ = apply_bugeye_effect( |
|
|
97 |
img, pose_results, left_eye_index=1, right_eye_index=0, kpt_thr=0.5) |
|
|
98 |
_ = apply_bugeye_effect( |
|
|
99 |
img, pose_results, left_eye_index=1, right_eye_index=0, kpt_thr=0.9) |