首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CIFaceFeature只检测到一张脸

CIFaceFeature只检测到一张脸
EN

Stack Overflow用户
提问于 2016-07-20 16:28:21
回答 1查看 321关注 0票数 1

问题是我的代码只适用于一张脸。如果我拍一张两张脸的照片,它就不会检测到第二张,而且两张以上的照片也是一样的。这是我的代码:

代码语言:javascript
复制
if let inputImage = imageView.image {
        let ciImage = CIImage(CGImage: inputImage.CGImage!)

        let options = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
        let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: options)

        let faces = faceDetector.featuresInImage(ciImage)

        if let face = faces.first as? CIFaceFeature {
            print("Found face at \(face.bounds)")

            if face.hasLeftEyePosition {
                print("Found left eye at \(face.leftEyePosition)")
            }

            if face.hasRightEyePosition {
                print("Found right eye at \(face.rightEyePosition)")
            }

            if face.hasMouthPosition {
                print("Found mouth at \(face.mouthPosition)")
            }
        }
        print("\(faces.count)")
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-20 16:53:03

你的问题是你只在第一张脸上找到了,正因为如此:

代码语言:javascript
复制
if let face = faces.first as? CIFaceFeature {

例如,您可以使用一个循环并对数组进行迭代,如下所示:

代码语言:javascript
复制
for item in faces {
    if let face = item as? CIFaceFeature {
        print("Found face at \(face.bounds)")

        if face.hasLeftEyePosition {
            print("Found left eye at \(face.leftEyePosition)")
        }

        if face.hasRightEyePosition {
            print("Found right eye at \(face.rightEyePosition)")
        }

        if face.hasMouthPosition {
            print("Found mouth at \(face.mouthPosition)")
        }
    }
}

或者像这样,稍微好一点:

代码语言:javascript
复制
if let faces = faceDetector.featuresInImage(ciImage) as? [CIFaceFeature] {
    for face in faces {
        print("Found face at \(face.bounds)")

        if face.hasLeftEyePosition {
            print("Found left eye at \(face.leftEyePosition)")
        }

        if face.hasRightEyePosition {
            print("Found right eye at \(face.rightEyePosition)")
        }

        if face.hasMouthPosition {
            print("Found mouth at \(face.mouthPosition)")
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38485972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档