gpt4 book ai didi

swift - 用于对象识别的 ARKit 和 Vision 框架

转载 作者:搜寻专家 更新时间:2023-10-30 22:18:21 24 4
gpt4 key购买 nike

我真的很想得到一些关于如何将 Apple 的新 Vision API 与 ARKit 结合起来以实现对象识别的指导。这不需要跟踪移动的物体,只需识别它在 3d 空间中的稳定状态,AR 体验就会做出相应的 react 。

我知道这种类型的体验在 VuforiaWikitude 等服务中可用,但我只想使用 native Apple API 进行尝试。

最佳答案

您不一定需要在项目中使用 Vision 框架本身,因为 ARKit 已经具备此功能。您只需要激活一个 detectionObjects您可以直接从 iOS 12 使用的实例属性:

var detectionObjects: Set<ARReferenceObject> { get set }

让我们看看 Apple 文档是怎么说的:

Use this property to choose known 3D objects for ARKit to find in the user's environment and present as ARObjectAnchor for use in your AR experience.

这是一个工作代码(就这么简单):

import ARKit

class ViewController: UIViewController {

@IBOutlet var sceneView: ARSCNView!
let config = ARWorldTrackingConfiguration()

override func viewDidLoad() {
super.viewDidLoad()

sceneView.delegate = self

// add reference objects into Resources in your project
guard let objects = ARReferenceObject.referenceObjects(inGroupNamed: "Resources",
bundle: nil)
else {
fatalError("No reference here!")
return
}

config.detectionObjects = objects
sceneView.session.run(config)
}
}

当然,插入一个带有 renderer() 方法的扩展:

extension ViewController: ARSCNViewDelegate {

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

if let _ = anchor as? ARObjectAnchor { // Special Type of anchor

let sphereNode = SCNNode(geometry: SCNSphere(radius: 0.05))
sphereNode.geometry?.firstMaterial?.diffuse.contents = UIColor.green
node.addChildNode(sphereNode)
}
}
}

关于swift - 用于对象识别的 ARKit 和 Vision 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45958387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com