in source/backend/chalicelib/pose.py [0:0]
def first_state(params, frame, _context):
_log.debug(f'Params: {params}')
_log.debug(f'Frame: {frame}')
faces = frame['rekMetadata']
num_faces = len(faces)
_log.debug(f'Number of faces: {num_faces}')
if num_faces != 1:
_log.info(f'FAIL: Number of faces. Expected: 1 Actual: {num_faces}')
return CHALLENGE_FAIL
face = faces[0]
confidence = face['Confidence']
_log.debug(f'Confidence: {confidence}')
if face['Confidence'] < REKOGNITION_FACE_MIN_CONFIDENCE:
_log.info(f'FAIL: Confidence. Expected: {REKOGNITION_FACE_MIN_CONFIDENCE} Actual: {confidence}')
return CHALLENGE_FAIL
rotation_pose = face['Pose']
_log.debug(f'Rotation: {rotation_pose}')
if _is_rotated(rotation_pose):
_log.info(f'FAIL: Face rotation. Expected: {REKOGNITION_FACE_MAX_ROTATION} Actual: {rotation_pose}')
return CHALLENGE_FAIL
expected_eyes = params['pose']['eyes']
if not _are_eyes_correct(expected_eyes, face):
_log.info(f'FAIL: Eyes. Expected: {expected_eyes}')
return CHALLENGE_FAIL
expected_mouth = params['pose']['mouth']
if not _is_mouth_correct(expected_mouth, face):
_log.info(f'FAIL: Mouth. Expected: {expected_mouth}')
return CHALLENGE_FAIL
_log.info(f'Success!')
return CHALLENGE_SUCCESS