2016-10-01 47 views
0

我想使用此代码通过CIFaceDetector检测图像中的人脸。由于图像方向无法检测图像中的人脸

let Orientation: Int! 

    switch ((info[UIImagePickerControllerOriginalImage] as? UIImage)?.imageOrientation)! { 
    case UIImageOrientation.up: 
     Orientation = 1 
    case UIImageOrientation.down: 
     Orientation = 3 
    case UIImageOrientation.left: 
     Orientation = 8 
    case UIImageOrientation.right: 
     Orientation = 6 
    case UIImageOrientation.upMirrored: 
     Orientation = 2 
    case UIImageOrientation.downMirrored: 
     Orientation = 4 
    case UIImageOrientation.leftMirrored: 
     Orientation = 5 
    case UIImageOrientation.rightMirrored: 
     Orientation = 7 
    } 

    let options = [CIDetectorAccuracy: CIDetectorAccuracyHigh, CIDetectorImageOrientation: Orientation] as [String : Any] 
    let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: options) 
    let faces = faceDetector?.features(in: personciImage) 

但是,这只适用于风景权。我不知道为什么它不适用于所有其他方向。我的意思是应该设置正确的方向。我也将一个UIImage投射到CIImage上。

guard let personciImage = CIImage(image: (info[UIImagePickerControllerOriginalImage] as? UIImage)!) else { 
     return 
    } 

问题在那里?

回答

0

CIDetector配置文档here它似乎是方向键实际上不是这个类的选项。很有可能人脸检测类实际上更喜欢让你在通过它之前旋转图像。

旋转图像相当简单,并且可以在SO上搜索,我找到了一个快速示例,但是我相信还有更多! quick rotation search example