2012-06-19 2 views
0

После того, как a tutorial from iTunes U о том, как сделать распознавание лиц (учебник доступен только в видео, а не в Интернете, поэтому я не могу опубликовать прямую ссылку). В принципе, я получил распознавание лиц для работы, но только если телефон находится в режиме LandscapeLeft.CIFaceFeature работает только в LandscapeLeft

Любые идеи о том, почему он работает так?

ответ

4

Не видя свой код, трудно сказать, но я предполагаю, что вы не устанавливаете CIDetectorImageOrientation? У меня было обнаружение сбоя, когда произошла несогласованность между ориентацией изображения и ориентацией детектора.

Некоторый код ниже - не вырезать 'пасту, но более грубый пример.

- (void)detectFacialFeatures:(UIImage *)image withHighAccuracy:(BOOL) highAccuracy 
{ 

CIImage* ciImage = [CIImage imageWithCGImage:sourceImage.CGImage]; 

if (ciImage == nil){ 
    printf("ugh \n"); 
    // bail 
} 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    NSString *accuracy = highAccuracy ? CIDetectorAccuracyHigh : CIDetectorAccuracyLow; 

    NSDictionary* options = [NSDictionary dictionaryWithObjectsAndKeys: 
          CIDetectorAccuracyHigh, CIDetectorAccuracy, 
          orientation, CIDetectorImageOrientation, 
          nil]; 

    CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace 
               context:nil options:options]; 

    NSArray *features = [detector featuresInImage:ciImage]; 

    NSLog(@"features %@", features); 

}); 
} 
+0

Спасибо, человек. Это сработало – Jason

+0

Yay! Не забудьте принять ответ. Чем больше очков я получаю, тем больше ... что мы получаем за репортеров? Я забыл. :-) –

Смежные вопросы