// // MPT_AgeController.m // GenderController // // Created by Andrew Salamon on 9/22/08. // Copyright 2008 Machine Perception Laboratory, University of California San Diego. All rights reserved. // #import "MPT_AgeController.h" #import @implementation MPT_AgeController - (id)initWithBundle:(NSBundle *)_bundle { if( self = [super initWithBundle:_bundle] ) { age = new AgeDetector; } return self; } - (void)dealloc { delete age; [super dealloc]; } - (id)copyWithZone:(NSZone *)zone { id cp = [super copyWithZone:zone]; return cp; } - (void)makeThreadsafe { [super makeThreadsafe]; age = new AgeDetector; } - (NSString *)localizedName { return NSLocalizedStringFromTableInBundle(@"Age Detector", nil, [self bundle], @""); } - (NSString *)internalName { return @"age"; } - (NSString *)step { return MPT_PluginStep_AfterFaces; } - (BOOL)getFeature:(char *)type X:(float &)x Y:(float &)y fromFace:(ObjectWithFeatures &)face { VisualObject feature; if( !face.getFeatureOfType( type, feature ) ) return NO; x = feature.x; y = feature.y; return YES; } - (id)processFace:(ObjectWithFeatures &)face fromFeatureDetector:(FeatureDetector *)fd withImage:(RImage &)pixels { NSNumber *res = NULL; // float AgeDetector::classifyAge (const RImage& image, float leyeX, float leyeY, float reyeX, float reyeY) float leyeX; float leyeY; float reyeX; float reyeY; if( ![self getFeature:"left_eye" X:leyeX Y:leyeY fromFace:face] ) return NULL; if( ![self getFeature:"right_eye" X:reyeX Y:reyeY fromFace:face] ) return NULL; res = [NSNumber numberWithFloat:age->classifyAge( pixels, leyeX, leyeY, reyeX, reyeY )]; return res; } - (id)processFaces:(EyeFaceList &)faces fromEyefinder:(MPTSlidingWindow *)eyefinder withImage:(RImage &)pixels { NSNumber *res = NULL; return res; } - (id)processFace:(FaceObject &)face withImage:(RImage &)pixels { return NULL; } - (void)processNoFace { } @end