def area_state()

in source/backend/chalicelib/nose.py [0:0]


def area_state(params, frame, _context):
    image_width = params['imageWidth']
    image_height = params['imageHeight']

    # Validating if face is inside area
    area_box = (params['areaLeft'], params['areaTop'],
                params['areaWidth'], params['areaHeight'])
    rek_metadata = frame['rekMetadata'][0]
    rek_face_box = [
        image_width * rek_metadata['BoundingBox']['Left'],
        image_height * rek_metadata['BoundingBox']['Top'],
        image_width * rek_metadata['BoundingBox']['Width'],
        image_height * rek_metadata['BoundingBox']['Height']
    ]
    inside_area_box = _is_inside_area_box(area_box, rek_face_box)
    _log.debug('inside_area_box: %s', inside_area_box)
    if not inside_area_box:
        return STATE_CONTINUE

    # Validating if face area is larger than minimal
    area_box_area = area_box[2] * area_box[3]
    rek_face_box_area = rek_face_box[2] * rek_face_box[3]
    rek_face_area_percent = rek_face_box_area * 100 / area_box_area
    gte_min_face_area = rek_face_area_percent + _MIN_FACE_AREA_PERCENT_TOLERANCE >= params['minFaceAreaPercent']
    _log.debug('gte_min_face_area: %s', gte_min_face_area)
    if gte_min_face_area:
        return STATE_NEXT
    return STATE_CONTINUE