CIFaceDetector原因不准确

时间:2014-08-29 17:43:32

标签: objective-c cocoa core-image cifacefeature

我试图使用CIDetector / CIFaceDetector进行基本的人脸检测,虽然它似乎能正确识别人脸,但是在我投入的所有内容中,边界矩形始终不准确。这是一个示例,其边界检测为绿框:http://i.imgur.com/bQNaEnq.jpg

似乎所有东西都被这个量普遍地向下移动或反映出来。它的坐标来自左下角而不是左上角。我已在此图像上尝试了所有八个CIDetectorImageOrientations,它们都返回相同的错误坐标。我在这里错过了什么?这是代码:

NSDictionary *detectorOptions = @{ CIDetectorAccuracy : CIDetectorAccuracyHigh };
self.faceDetector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:detectorOptions];
self.features = [self.faceDetector featuresInImage:[CIImage imageWithCGImage:image.CGImage options:@{CIDetectorImageOrientation: @(1)}]];

真的是这样。该图像是一个基本的UIImage imageWithData:来自网络。

1 个答案:

答案 0 :(得分:1)

您正在使用UIKit和Core Image。这些框架中的每一个都使用不同的协调系统。

  • UIKit协调系统从左上角开始
  • 核心图像坐标从左下角开始

您可能正在使用Core Image坐标绘制绿色矩形到UIKit上下文。您的代码可以正常工作,您只需要转换坐标。

您还可以在iOS Dev Library

中找到对它的引用

请参阅CoreImage and UIKit coordinates blog post,了解如何在这两个系统之间进行转换。