Как настроить распознавание нескольких лиц с помощью ARKit3? - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь разработать приложение для распознавания лиц 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 голосов
/ 16 июля 2019

Извините, это моя проблема, потому что мой мобильный телефон iPhoneX, это чип A11, распознавание нескольких лиц не поддерживается.Причиной этой проблемы является то, что в то время я использовал систему iOS13 Beta 1, но максимальное количество распознаваний лиц, поддерживаемых во время прогона, было 3, но на самом деле был поддержан только один человек.При обновлении до iOS13 Beta 2 было показано, что обновление является правильным.

...