我正在尝试使用CIDetector/CIFaceDetector进行基本的人脸检测,虽然它似乎可以正确识别人脸,但边界矩形在我扔给它的所有东西中都始终不准确。下面是一个示例,它检测到的边界为绿色框:https://i.stack.imgur.com/E0vkH.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:来自网络。
您正在使用UIKit和Core Image。每一个框架都使用不同的协调系统。
- UIKit协调系统从左上角开始
- 核心图像坐标从左下角开始
您可能正在为UIKit上下文绘制带有核心图像坐标的绿色矩形。您的代码可以正常工作,只需要转换坐标即可。
你也可以在iOS开发人员库中找到它的参考资料
请参阅CoreImage和UIKit的坐标博客文章,了解如何在这两个系统之间转换的非常巧妙的方法。