CIDetector и UIImagePickerController

Я пытаюсь реализовать встроенный 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, но это может быть что угодно.

5
задан Xiaochao Yang 19 July 2013 в 18:21
поделиться