遵循a tutorial from iTunes U进行面部检测的方法(该教程仅在视频中,而不是在线编写的,因此我无法发布直接链接)。基本上,我可以使用面部检测功能,但前提是手机处于LandscapeLeft模式。

关于它为什么这样工作的任何想法?

最佳答案

没有看到您的代码很难说,但是我的猜测是您没有设置CIDetectorImageOrientation?当图像方向和检测器方向设置为不匹配时,检测失败。

下面的一些代码-不是剪切'n粘贴,而是更多的粗略示例。

- (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);

});
}

关于iphone - CIFaceFeature仅在LandscapeLeft中起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11110276/

10-09 03:10