在“session(_:didUpdate:)”方法中利用内存的最佳方法是什么?

问题描述

我的用例是我想计算相机看到的一只手(第一只手)的各种手势。我能够找到身体锚和手锚和姿势。 See my video here。 我正在尝试利用以前的位置 SIMD3 信息来计算展示了什么样的手势。我确实看到了 Apple 发布的示例,该示例显示了虚拟写入,但我不确定缓冲区是否是此类问题的正确解决方案。

我想要做一个具体例子是检测滑动、长按、点击,就好像用户戴着一副 AR 眼镜(由 Apple 某天制造)。为了澄清起见,我想从我的手中投射光线并在实体或锚上执行手势。

这里是给那些想知道如何获得身体锚点的人的片段:

public func session(_ session: ARSession,didUpdate frame: ARFrame) {

    let capturedImage = frame.capturedImage

    let imageRequestHandler = VNImageRequestHandler(cvPixelBuffer: capturedImage,orientation: .right,options: [:])
    let handPoseRequest = VNDetectHumanHandPoseRequest()
    //let bodyPoseRequest = VNDetectHumanBodyPoseRequest()

    do {
        try imageRequestHandler.perform([handPoseRequest])
        guard let observation = handPoseRequest.results?.first else {
            return
        }
        // Get points for thumb and index finger.
        let thumbPoints = try observation.recognizedPoints(.thumb)
        let indexFingerPoints = try observation.recognizedPoints(.indexFinger)
        let pinkyFingerPoints = try observation.recognizedPoints(.littleFinger)
        let ringFingerPoints = try observation.recognizedPoints(.ringFinger)
        let middleFingerPoints = try observation.recognizedPoints(.middleFinger)
        self.detectHandPose(handobservations: observation)
    } catch {
        print("Failed to perform image request.")
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)