所有方向的IOS CoreImage面部检测

6
我正在IOS上使用CoreImage来检测图像中的人脸。当有多张人脸时它能正常工作,但对于像这样简单的脸部却无法检测出来:enter image description here 这张脸很大很明显,但是CoreImage检测不到。 我认为可能是因为我的kCGImagePropertyOrientation有问题。
我将其设置为5,只是因为一个在线教程的例子。 然而,我处理的图像是用户上传的,所以我事先不知道脸部的方向。 有没有办法尝试所有方向? 在图像事先不确定的情况下,实现CoreImage人脸检测的正确方法是什么?
以下是我的代码:
var imageOptions = Dictionary<String,Any>()
imageOptions[CIDetectorImageOrientation] = 5
imageOptions[CIDetectorSmile] = true

let image = CIImage(cgImage: imageView.image!.cgImage!)
let accuracy = [CIDetectorAccuracy: CIDetectorAccuracyHigh]

let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: accuracy)
let faces = faceDetector?.features(in: image, options: imageOptions as? [String : AnyObject])

人脸检测只能适用于指定的方向,如果您想允许处理任何类型的方向,则可能需要从图像元数据中读取方向,然后将该方向传递给您的过滤器。 - Pochi
1个回答

3

你可以这样做

   var imageOrienttion = 0
   switch (YourUIImage.imageOrientation) {
    case UIImageOrientation.up:
        imageOrienttion = 1
        break;
    case UIImageOrientation.down:
        imageOrienttion = 3
        break;
    case UIImageOrientation.left:
        imageOrienttion = 8
        break;
    case UIImageOrientation.right:
        imageOrienttion = 6
        break;
    case UIImageOrientation.upMirrored:
        imageOrienttion = 2
        break;
    case UIImageOrientation.downMirrored:
        imageOrienttion = 4
        break;
    case UIImageOrientation.leftMirrored:
        imageOrienttion = 5
        break;
    case UIImageOrientation.rightMirrored:
        imageOrienttion = 7
        break;
   }
   imageOptions[CIDetectorImageOrientation] = imageOrienttion

这张图片是用户上传的。这段代码看起来像是在读取图像元数据。我的问题是,iOS能否获取每个单独图像的UIImageOrientation?即使是用户上传的图像? - James Dorfman
iOS 应该能够确定方向。你可以尝试这段代码,看看它是否有效。或者你可以循环遍历所有值,直到找到一个面孔。 - Vitaly Migunov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接