我真的想要一些指导,如何将苹果新的Vision API与ARKit结合起来,以实现对象识别。这将不需要跟踪移动的对象,只需识别它在3d空间中的稳定性,以便AR体验做出相应的反应。
我知道在像Vuforia或Wikitude这样的服务中可以获得这种类型的体验,但我想只使用原生的苹果API来尝试。
发布于 2019-11-24 19:40:11
你不需要在你的项目中使用Vision框架本身,因为ARKit已经有了这个特性。您所需要做的就是激活一个detectionObjects实例属性,该属性可以在iOS 12中使用:
var detectionObjects: Set<ARReferenceObject> { get set }让我们看看Apple文档是怎么说的:
使用此属性为ARKit选择已知的3D对象,以便在用户的环境中查找并显示为ARObjectAnchor,以便在您的AR体验中使用。
下面是一个有效的代码(就这么简单):
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)
}
}
}发布于 2018-02-08 02:20:11
我对这个网站比较陌生,所以我还不能发表评论。
iOS 11.3中的ARKit 1.5包含Image Recognition。
还有对运行Vision with ARKit的支持。
我不完全确定您的要求是什么,但这些可能会有所帮助。
发布于 2018-10-18 11:39:46
要识别(多个)对象,包括它们的坐标(在ARKit中使用),您将需要训练对象检测器(而不是将其顺利导出到CoreML模型中),构建/训练它的最简单方法是CreateML和TuriCreate (稍微不太容易)。
好吧,这可能是一个很好的地方,因为你的问题是相当高层次的。
https://stackoverflow.com/questions/45958387
复制相似问题