組み込みの iOS 5 顔検出 API を実装しようとしています。のインスタンスを使用してユーザーが写真を撮れるようにしてから、顔の特徴を検出するためUIImagePickerController
に使用しようとしています。CIDetector
残念ながら、featuresInImage
常にサイズ 0 の配列を返します。
コードは次のとおりです。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage* picture = [info objectForKey:UIImagePickerControllerOriginalImage];
NSNumber *orientation = [NSNumber numberWithInt:
[picture imageOrientation]];
NSDictionary *imageOptions =
[NSDictionary dictionaryWithObject:orientation
forKey:CIDetectorImageOrientation];
CIImage *ciimage = [CIImage imageWithCGImage:[picture CGImage]
options:imageOptions];
NSDictionary *detectorOptions =
[NSDictionary dictionaryWithObject:CIDetectorAccuracyLow
forKey:CIDetectorAccuracy];
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace
context:nil
options:detectorOptions];
NSArray *features = [detector featuresInImage:ciimage];
NSLog(@"Feature size: %d", features.count);
}
これは常に 0 の特徴を返します。ただし、アプリケーションに組み込まれているファイルから UIImage を使用すると、顔検出はうまく機能します。
このPragmatic Bookshelf の記事のコードを使用しています。
価値があるのは、UIImageをカメラからCIImageに変換するときのエラーだと思いますが、何でもかまいません。