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