从 ARKit 场景获取 ARFrame

Get ARFrame from ARKit scene

我是 iPhone 应用程序开发的新手(但在其他语言方面经验丰富),我正在制作一个 ARKit 应用程序,我需要在其中跟踪图像的位置并在该图像周围显示一个矩形。

我可以用 OpenCV 在 C++ 中完成,并制作适当的 "bridging" 类 以便能够从 swift 调用此代码。现在,我需要从 ARKit 获取图像并将它们传递给这个函数。

我如何订阅一个处理来自 ARKit 场景的 ARFrame 的函数?我发现我可以从 sceneView.session.currentFrame 得到一些 ARFrame 但我没有找到如何制作一个函数来为每一帧调用(或者每次我的函数结束并准备好接收下一帧时帧)。

此外,我发现了 Vision Framework,但它似乎只能跟踪用户点击的元素。是这样吗?或者是否有可用于此目的的预定义函数的组合?

您可以使用 ARSessionDelegate 协议中的 session(:didUpdate:) 方法获取相机捕获的每个帧。请注意,即使您不使用提供的 ARFrame,此方法也可能有用;例如,如果当前可见添加了任何虚拟内容,我会用它 "poll"。

关于跟踪图像问题,我相信你可以创建一个 ARAnchor or SCNNode 并将其放置在图像上,ARKit 会跟踪它