| 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() |
|
|