Swift: CoreImage 人脸检测会将每个圆形物体检测为人脸

Swift: CoreImage Face Detection will Detect Every round object as a Face

在我的应用程序中,我想对 UIImage 使用人脸检测,所以我使用库中的 CoreImage 构建(我知道视觉库也是人脸检测的最新库。但是它仅支持 ios 11.0 及更高版本)。该库工作正常,直到我注意到任何具有圆形表面的图像都会被检测为人脸,即使它不是。

这是我的代码:

func checkFaceDetection(image: UIImage) -> Bool {
        var isFace = false
        let personciImage = CIImage(image: image)

        let accuracy = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
        let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: accuracy)
        let faces = faceDetector?.features(in: personciImage!)

        if let face = faces?.first as? CIFaceFeature {
            print("Found face at \(face.bounds)")
            if face.hasLeftEyePosition && face.hasRightEyePosition && face.hasMouthPosition && face.hasFaceAngle{
                isFace = true
            }else{
                isFace = false
            }
        }
        return isFace
    }

即使我用左眼,右眼,嘴巴和脸角过滤了那个图像,它仍然不能解决我的问题。

您可以将 CIDetectorAccuracyHigh 改为低。它会更有用

let imageOptions = NSDictionary(object: NSNumber(value: 5) as NSNumber, forKey: CIDetectorImageOrientation as NSString)