|
import json |
|
import unittest |
|
import numpy as np |
|
|
|
import importlib |
|
utils = importlib.import_module('extensions.sd-webui-controlnet.tests.utils', 'utils') |
|
utils.setup_test_env() |
|
|
|
from annotator.openpose import encode_poses_as_json, PoseResult, Keypoint |
|
from annotator.openpose.body import BodyResult |
|
|
|
class TestEncodePosesAsJson(unittest.TestCase): |
|
def test_empty_list(self): |
|
poses = [] |
|
canvas_height = 1080 |
|
canvas_width = 1920 |
|
result = encode_poses_as_json(poses, canvas_height, canvas_width) |
|
expected = json.dumps({ |
|
'people': [], |
|
'canvas_height': canvas_height, |
|
'canvas_width': canvas_width, |
|
}, indent=4) |
|
self.assertEqual(result, expected) |
|
|
|
def test_single_pose_no_keypoints(self): |
|
poses = [PoseResult(BodyResult(None, 0, 0), None, None, None)] |
|
canvas_height = 1080 |
|
canvas_width = 1920 |
|
result = encode_poses_as_json(poses, canvas_height, canvas_width) |
|
expected = json.dumps({ |
|
'people': [ |
|
{ |
|
'pose_keypoints_2d': None, |
|
'face_keypoints_2d': None, |
|
'hand_left_keypoints_2d': None, |
|
'hand_right_keypoints_2d': None, |
|
}, |
|
], |
|
'canvas_height': canvas_height, |
|
'canvas_width': canvas_width, |
|
}, indent=4) |
|
self.assertEqual(result, expected) |
|
|
|
def test_single_pose_with_keypoints(self): |
|
keypoints = [Keypoint(np.float32(0.5), np.float32(0.5)), None, Keypoint(0.6, 0.6)] |
|
poses = [PoseResult(BodyResult(keypoints, 0, 0), keypoints, keypoints, keypoints)] |
|
canvas_height = 1080 |
|
canvas_width = 1920 |
|
result = encode_poses_as_json(poses, canvas_height, canvas_width) |
|
expected = json.dumps({ |
|
'people': [ |
|
{ |
|
'pose_keypoints_2d': [ |
|
0.5, 0.5, 1.0, |
|
0.0, 0.0, 0.0, |
|
0.6, 0.6, 1.0, |
|
], |
|
'face_keypoints_2d': [ |
|
0.5, 0.5, 1.0, |
|
0.0, 0.0, 0.0, |
|
0.6, 0.6, 1.0, |
|
], |
|
'hand_left_keypoints_2d': [ |
|
0.5, 0.5, 1.0, |
|
0.0, 0.0, 0.0, |
|
0.6, 0.6, 1.0, |
|
], |
|
'hand_right_keypoints_2d': [ |
|
0.5, 0.5, 1.0, |
|
0.0, 0.0, 0.0, |
|
0.6, 0.6, 1.0, |
|
], |
|
}, |
|
], |
|
'canvas_height': canvas_height, |
|
'canvas_width': canvas_width, |
|
}, indent=4) |
|
self.assertEqual(result, expected) |
|
|
|
if __name__ == '__main__': |
|
unittest.main() |
|
|