// // MPT_GlassesController.m // GlassesDetector // // Created by Andrew Salamon on 9/8/08. // Copyright 2008 Machine Perception Laboratory, University of California San Diego. All rights reserved. // #import "MPT_GlassesController.h" #import @implementation MPT_GlassesController - (id)initWithBundle:(NSBundle *)_bundle { if( self = [super initWithBundle:_bundle] ) { glasses = new GlassesDetector; } return self; } - (void)dealloc { delete glasses; [super dealloc]; } - (id)copyWithZone:(NSZone *)zone { id cp = [super copyWithZone:zone]; return cp; } - (void)makeThreadsafe { [super makeThreadsafe]; glasses = new GlassesDetector; } - (NSString *)localizedName { return NSLocalizedStringFromTableInBundle(@"Glasses Detector", nil, [self bundle], @""); } - (NSString *)internalName { return @"glasses"; } - (NSString *)step { return MPT_PluginStep_AfterFaces; } - (id)processFace:(ObjectWithFeatures &)face fromFeatureDetector:(FeatureDetector *)fd withImage:(RImage &)pixels { NSNumber *res = NULL; res = [NSNumber numberWithFloat:glasses->detectGlasses( pixels, face.x, face.y, face.xSize )]; #ifdef xxxDEBUG NSImage *faceimg = [NSImage imageFromRImage:&(glasses->m_prFacePixels)]; NSData *bitmapData = [NSBitmapImageRep representationOfImageRepsInArray:[faceimg representations] usingType:NSJPEGFileType properties:[NSDictionary dictionaryWithObject:[NSDecimalNumber numberWithFloat:1.0] forKey:NSImageCompressionFactor]]; if( bitmapData && ([bitmapData length] > 0) ) { [bitmapData writeToFile:@"/tmp/glassesface.jpg" atomically:YES]; } #endif return res; } - (id)processFaces:(EyeFaceList &)faces fromEyefinder:(MPTSlidingWindow *)eyefinder withImage:(RImage &)pixels { NSNumber *res = NULL; if( faces.size() > 0 ) res = [NSNumber numberWithFloat:glasses->detectGlasses( pixels, faces[0].x, faces[0].y, faces[0].xSize )]; return res; } - (id)processFace:(FDFaceObject &)face withImage:(RImage &)pixels { return NULL; } - (void)processNoFace { } @end