Я пытаюсь реализовать встроенный API обнаружения лиц iOS 5. Я использую экземпляр UIImagePickerController
, чтобы позволить пользователю сделать снимок, а затем пытаюсь использовать CIDetector
для обнаружения черт лица. К сожалению, featureInImage
всегда возвращает массив нулевого размера.
Вот код:
- (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, но это может быть что угодно.