如何使用ARKit3设置多人脸识别?

时间:2019-07-10 08:45:55

标签: arkit

我正在尝试开发ARKit3面部识别应用程序。我想制作一个支持多人脸识别的应用程序。我进行了以下设置,但它不起作用。我有问题吗?

 override func viewDidLoad() {
        super.viewDidLoad()

        /// SetupDelegate
        faceSCNView.delegate = self
        faceSCNView.session.delegate = self

    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        /// FaceTrackingConfiguration
        let configuration = ARFaceTrackingConfiguration()

        /// MaxNumberOfTrackedFaces = 2
        configuration.maximumNumberOfTrackedFaces = 2

        /// Run
        faceSCNView.session.run(configuration)
    }

代理

extension GameViewController : ARSCNViewDelegate {

    func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

        print(anchor.sessionIdentifier , anchor.identifier , anchor.name)

        if anchor is ARFaceAnchor {
            print("renderer didAdd", anchor.identifier , anchor.name ?? "noname")
        }
    }

    func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
        guard
            let faceAnchor = anchor as? ARFaceAnchor
            else { return}

        print("renderer didUpdate", faceAnchor.identifier , faceAnchor.blendShapes[.mouthClose] ?? 0)
    }
}

extension GameViewController : ARSessionDelegate {

    func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {

      print(anchors.count)
        for anchor in anchors where anchor is ARFaceAnchor {

            let faceAnchor = anchor as! ARFaceAnchor

            print("Session didAdd", faceAnchor.identifier , faceAnchor.blendShapes[.mouthClose] ?? 0)
        }
    }

    func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {

        for anchor in anchors where anchor is ARFaceAnchor {

            let faceAnchor = anchor as! ARFaceAnchor

            print("Session didUpdate", faceAnchor.identifier , faceAnchor.blendShapes[.mouthClose] ?? 0)

        }
    }

}

无论有多少人在一起进行面部识别,只有一个公认的锚点,标识符为:CA831DB2-E078-45C3-9A1C-44F8459AA04F

renderer didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.04505286
Session didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.04578292
renderer didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.04813192
Session didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.04813192
Session didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.04832877
Session didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.0484867
renderer didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.0484867
renderer didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.04869337
Session didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.04869337
Session didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.0489419
renderer didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.05000613
Session didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.05000613
renderer didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.05070856
Session didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.05031016
Session didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.05070856
renderer didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.05118915
Session didUpdate CA831DB2-E078-45C3-9A1C-44F8459AA04F 0.05093153

1 个答案:

答案 0 :(得分:0)

对不起,这是我的问题,因为我的手机是iPhoneX,它是A11芯片,所以不支持多人脸识别。 出现此问题的原因是我当时使用的是iOS13 Beta 1系统,但是运行期间支持的最大面部识别数量为3,但实际上仅支持一个人。当我升级到iOS13 Beta 2时,该更新显示为正确的更新。