|
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.util import faceDetect, handDetect |
|
from annotator.openpose.body import Keypoint, BodyResult |
|
|
|
class TestFaceDetect(unittest.TestCase): |
|
def test_no_faces(self): |
|
oriImg = np.zeros((100, 100, 3), dtype=np.uint8) |
|
body = BodyResult([None] * 18, total_score=3, total_parts=0) |
|
expected_result = None |
|
result = faceDetect(body, oriImg) |
|
|
|
self.assertEqual(result, expected_result) |
|
|
|
def test_single_face(self): |
|
body = BodyResult([ |
|
Keypoint(50, 50), |
|
*([None] * 13), |
|
Keypoint(30, 40), |
|
Keypoint(70, 40), |
|
Keypoint(20, 50), |
|
Keypoint(80, 50), |
|
], total_score=2, total_parts=5) |
|
|
|
oriImg = np.zeros((100, 100, 3), dtype=np.uint8) |
|
|
|
expected_result = (0, 0, 120) |
|
result = faceDetect(body, oriImg) |
|
|
|
self.assertEqual(result, expected_result) |
|
|
|
class TestHandDetect(unittest.TestCase): |
|
def test_no_hands(self): |
|
oriImg = np.zeros((100, 100, 3), dtype=np.uint8) |
|
body = BodyResult([None] * 18, total_score=3, total_parts=0) |
|
expected_result = [] |
|
result = handDetect(body, oriImg) |
|
|
|
self.assertEqual(result, expected_result) |
|
|
|
def test_single_left_hand(self): |
|
oriImg = np.zeros((100, 100, 3), dtype=np.uint8) |
|
|
|
body = BodyResult([ |
|
None, None, None, None, None, |
|
Keypoint(20, 20), |
|
Keypoint(40, 30), |
|
Keypoint(60, 40), |
|
*([None] * 8), |
|
Keypoint(20, 60), |
|
Keypoint(40, 70), |
|
Keypoint(60, 80) |
|
], total_score=3, total_parts=0.5) |
|
|
|
expected_result = [(49, 26, 33, True)] |
|
result = handDetect(body, oriImg) |
|
|
|
self.assertEqual(result, expected_result) |
|
|
|
def test_single_right_hand(self): |
|
oriImg = np.zeros((100, 100, 3), dtype=np.uint8) |
|
|
|
body = BodyResult([ |
|
None, None, |
|
Keypoint(20, 20), |
|
Keypoint(40, 30), |
|
Keypoint(60, 40), |
|
*([None] * 11), |
|
Keypoint(20, 60), |
|
Keypoint(40, 70), |
|
Keypoint(60, 80) |
|
], total_score=3, total_parts=0.5) |
|
|
|
expected_result = [(49, 26, 33, False)] |
|
result = handDetect(body, oriImg) |
|
|
|
self.assertEqual(result, expected_result) |
|
|
|
def test_multiple_hands(self): |
|
body = BodyResult([ |
|
Keypoint(20, 20), |
|
Keypoint(40, 30), |
|
Keypoint(60, 40), |
|
Keypoint(20, 60), |
|
Keypoint(40, 70), |
|
Keypoint(60, 80), |
|
Keypoint(10, 10), |
|
Keypoint(30, 20), |
|
Keypoint(50, 30), |
|
Keypoint(10, 50), |
|
Keypoint(30, 60), |
|
Keypoint(50, 70), |
|
*([None] * 6), |
|
], total_score=3, total_parts=0.5) |
|
|
|
oriImg = np.zeros((100, 100, 3), dtype=np.uint8) |
|
|
|
expected_result = [(0, 0, 100, True), (16, 43, 56, False)] |
|
result = handDetect(body, oriImg) |
|
self.assertEqual(result, expected_result) |
|
|
|
|
|
if __name__ == '__main__': |
|
unittest.main() |
|
|