// // AUToolMain.m // AUCoderDemo // // Created by Andrew Salamon on 7/24/06. // Copyright (c) 2006 Machine Perception Laboratory. University of California San Diego. // All rights reserved. #import #import "MPT_CERT.h" #import NSString *recordDataPoint_NRL( NSArray *results, NSString *filePath ); void usage( const char *name ); int main (int argc, const char * argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; const char *name = argv[0]; if( argc < 2 ) usage( name ); NSString *dir = [NSString stringWithCString:argv[1]]; NSFileManager *fileManager = [NSFileManager defaultManager]; BOOL isDir = NO; if( ![fileManager fileExistsAtPath:dir isDirectory:&isDir] || !isDir ) usage( name ); MPT_CERT *cert = [[MPT_CERT alloc] init]; [cert setDoFilters:NO]; [cert setDoingSequence:YES]; [cert setDoSmile:NO]; mp_SVMWeights *weights = mp_SVMWeights::getSVMWeights(); weights->setDirectory( "/Users/asalamon/Dev/CERT/Build/mp_auCoder/SVMWeights/SVMWeights" ); [cert loadAllKernelsWithProgress:nil]; NSDirectoryEnumerator *fileEnum = [fileManager enumeratorAtPath:dir]; int poolCnt = 0; NSAutoreleasePool *subPool = [[NSAutoreleasePool alloc] init]; NSString *imageName; while( imageName = [fileEnum nextObject] ) { NSString *path = [dir stringByAppendingPathComponent:imageName]; NSImage *image = [[NSImage alloc] initWithContentsOfFile:path]; NSString *resultString = nil; if( image ) { [cert processImage:image]; NSArray *results = [cert results]; resultString = recordDataPoint_NRL( results, path ); [image release]; } else { resultString = [NSString stringWithFormat:@"Unable to read path: %@", path]; } printf( "%s\n", [resultString UTF8String] ); ++poolCnt; if( poolCnt >= 1000 ) { poolCnt = 0; [subPool release]; subPool = [[NSAutoreleasePool alloc] init]; } } [pool release]; return 0; } void usage( const char *name ) { printf( "%s: [-h] \n", name ); printf( " -h: Help, including valid property names\n" ); exit(-1); } NSString *recordDataPoint_NRL( NSArray *results, NSString *filePath ) { // filePath: /RAID/xxx/xxx/D006_S014_face/D006_S014_face_9.jpg NSArray *nameParts = [[[filePath lastPathComponent] stringByDeletingPathExtension] componentsSeparatedByString:@"_"]; NSString *frame = @"UNK"; if( [nameParts count] >= 4 ) frame = [nameParts objectAtIndex:3]; NSMutableString *resString = [NSMutableString string]; [resString appendFormat:@"%@, ", frame]; NSEnumerator *resEnum = [results objectEnumerator]; NSNumber *num; while( num = [resEnum nextObject] ) { [resString appendFormat:@"%.6lf, ", [num doubleValue]]; } [resString deleteCharactersInRange:NSMakeRange( [resString length]-2, 2 )]; return resString; }