如果我从横向模式单击快照,人脸检测算法将不起作用
Posted
技术标签:
【中文标题】如果我从横向模式单击快照,人脸检测算法将不起作用【英文标题】:Face Detection algorithm is not working if I click a snap from landscape mode 【发布时间】:2012-07-23 07:04:40 【问题描述】:我使用以下代码从图像中检测人脸:
-(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");
如果我从横向模式单击快照,此算法将不起作用。为什么?任何帮助将不胜感激。
提前致谢
【问题讨论】:
它是否适用于以纵向倒置模式拍摄的图像(顶部的主页按钮)。您可以尝试通过应用变换来旋转捕获图像.. 看看***.com/questions/10496724/…它可能对你有帮助:) 【参考方案1】:我认为问题出在这一行:
NSDictionary* imageOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:6] forKey:CIDetectorImageOrientation];
您实际上是在告诉它仅在您传递的数字是 6 时才寻找纵向方向。
头文件中的文档说:
// 可与 -[CIDetector featuresInImage:options:] 一起使用的选项
/* 这个键的值是一个从 1..8 开始的整数 NSNumber,例如 在 kCGImagePropertyOrientation 中找到。如果存在,将进行检测 基于该方向,但返回特征中的坐标将 仍然是基于那些图像。 */
选项是
很烦人 featuresInImage:options:
没有记录(我现在必须提交一个错误,因为我已经看到它了)
【讨论】:
好的,谢谢你,我也发现了。以上是关于如果我从横向模式单击快照,人脸检测算法将不起作用的主要内容,如果未能解决你的问题,请参考以下文章