2014-08-29 37 views
0

我想使用CIDetector/CIFaceDetector進行基本的人臉檢測,並且,雖然它似乎正確識別人臉,但是邊界矩形在我拋出的所有內容中始終不準確。下面是一個示例,其邊界檢測爲綠色框:http://i.imgur.com/bQNaEnq.jpgCIFaceDetector起源不準確

一切似乎只是普遍向下移動或鏡像此量。這就像座標來自左下方而不是左上方。我已經在這個圖像上嘗試了所有八個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

您正在那裏使用UIKit和Core Image。這些框架中的每一個都使用不同的協調系統。

  • UIKit的協調系統開始在左上角
  • 核心圖像座標開始在左下角

你可能繪製綠色矩形與核心圖像座標的UIKit上下文。您的代碼正常工作,您只需要轉換座標。

您還可以找到在iOS Dev Library

對它的引用見CoreImage and UIKit coordinates blog post非常簡潔的方式如何將這兩個系統之間的轉換。