1

我使用以下代码从图像中检测人脸:

-(void)markFaces:(UIImageView *)imagePick {

CIImage* image = [CIImage imageWithCGImage:imagePick.image.CGImage];
CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace 
                                          context:nil options:[NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]];
NSDictionary* imageOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:6] forKey:CIDetectorImageOrientation];
NSLog(@"imageOptions %@",imageOptions);
NSArray* features = [detector featuresInImage:image options:imageOptions];

if([features count] > 0)
{
    NSLog(@"Face Found");
}
else
{
    NSLog(@"Face not Found");        
}
}

如果我从横向模式单击快照,此算法将不起作用。为什么?任何帮助,将不胜感激。

提前致谢

4

1 回答 1

0

我认为问题出在这一行:

NSDictionary* imageOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:6] forKey:CIDetectorImageOrientation];

您实际上是在告诉它仅在您传递的数字是 6 时才寻找纵向方向。

头文件中的文档说:

// 可与 -[CIDetector featuresInImage:options:] 一起使用的选项

/* 此键的值是 1..8 中的整数 NSNumber,例如在 kCGImagePropertyOrientation 中找到的值。如果存在,将基于该方向进行检测,但返回特征中的坐标仍将基于图像的坐标。*/

选项是

在此处输入图像描述

没有记录很烦人featuresInImage:options:(我现在必须提交一个错误,因为我已经看到了)

于 2012-07-23T13:30:18.130 回答