Я пытаюсь реализовать встроенный API обнаружения лиц iOS 5. Я использую экземпляр UIImagePickerController
, чтобы позволить пользователю сделать снимок, а затем я пытаюсь использовать CIDetector
для обнаружения черт лица. К сожалению, featuresInImage
всегда возвращает массив размером 0.CIDetector и UIImagePickerController
Вот код:
- (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 article.
Для чего это стоит, я думаю, что ошибка заключается в том, что я конвертирую UIImage из камеры в CIImage, но это может быть что угодно.
+1 Отличный ответ. –
что такое self.image.imageOrientation вы можете объяснить? –