首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于目标识别的ARKit和视觉框架

用于目标识别的ARKit和视觉框架
EN

Stack Overflow用户
提问于 2017-08-30 18:46:22
回答 3查看 2K关注 0票数 9

我真的想要一些指导,如何将苹果新的Vision API与ARKit结合起来,以实现对象识别。这将不需要跟踪移动的对象,只需识别它在3d空间中的稳定性,以便AR体验做出相应的反应。

我知道在像VuforiaWikitude这样的服务中可以获得这种类型的体验,但我想只使用原生的苹果API来尝试。

EN

回答 3

Stack Overflow用户

发布于 2019-11-24 19:40:11

你不需要在你的项目中使用Vision框架本身,因为ARKit已经有了这个特性。您所需要做的就是激活一个detectionObjects实例属性,该属性可以在iOS 12中使用:

代码语言:javascript
复制
var detectionObjects: Set<ARReferenceObject> { get set }

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

使用此属性为ARKit选择已知的3D对象,以便在用户的环境中查找并显示为ARObjectAnchor,以便在您的AR体验中使用。

下面是一个有效的代码(就这么简单):

代码语言:javascript
复制
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()方法插入一个扩展:

代码语言:javascript
复制
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)
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-02-08 02:20:11

我对这个网站比较陌生,所以我还不能发表评论。

iOS 11.3中的ARKit 1.5包含Image Recognition

还有对运行Vision with ARKit的支持。

我不完全确定您的要求是什么,但这些可能会有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2018-10-18 11:39:46

要识别(多个)对象,包括它们的坐标(在ARKit中使用),您将需要训练对象检测器(而不是将其顺利导出到CoreML模型中),构建/训练它的最简单方法是CreateML和TuriCreate (稍微不太容易)。

  • 要将3D对象添加到AR体验中的特定点,您将需要找到其ARAnchor的'worldTransform‘(您将需要子类化)。

  • 要找到'worldTransform’,您将需要在2D中识别对象的位置的ARFrame上激发一个'hitTest()‘。

好吧,这可能是一个很好的地方,因为你的问题是相当高层次的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45958387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档