ARKit 无法识别参考图像

Posted

技术标签:

【中文标题】ARKit 无法识别参考图像【英文标题】:ARKit does not recognize reference images 【发布时间】:2021-12-26 14:31:50 【问题描述】:

我正在尝试使用 ARKit 和 RealityKit 将 3D 模型放置在已识别的图像之上 - 全部以编程方式进行。在启动 ARView 之前,我正在下载要在检测到参考图像时显示的模型。

这是我目前的设置:

override func viewDidLoad() 
    super.viewDidLoad()
    
    arView.session.delegate = self
    
    // Check if the device supports the AR experience
    if (!ARConfiguration.isSupported) 
        TLogger.shared.error_objc("Device does not support Augmented Reality")
        return
    
    
    guard let qrCodeReferenceImage = UIImage(named: "QRCode") else  return 
    let detectionImages: Set<ARReferenceImage> = convertToReferenceImages([qrCodeReferenceImage])
    
    let configuration = ARWorldTrackingConfiguration()
    configuration.detectionImages = detectionImages
    
    arView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])

我使用 ARSessionDelegate 在添加新图像锚点时收到通知,这意味着检测到参考图像:

func session(_ session: ARSession, didAdd anchors: [ARAnchor]) 
    print("Hello")
    for anchor in anchors 
        guard let imageAnchor = anchor as? ARImageAnchor else  return 
        let referenceImage = imageAnchor.referenceImage
        
        addEntity(self.localModelPath!)
    

但是,委托方法永远不会被调用,而其他委托函数(如 func session(ARSession, didUpdate: ARFrame) )正在被调用,所以我假设会话只是没有检测到图像。图像分辨率很好,打印的图像很大,所以它肯定会被 ARSession 识别。在将其添加到配置之前,我还检查了该图像是否已找到。

任何人都可以在这里引导我走向正确的方向吗?

【问题讨论】:

您是否尝试将图像添加到项目中以查看是否有效?如果图像不适合识别,AR 资源文件夹会警告您。 【参考方案1】:

看起来您的配置设置正确。识别参考图像时,应调用您的委托函数。确保您的配置不会在代码中的任何位置被覆盖。

【讨论】:

配置实际上被 viewWillAppear 函数覆盖了。我不知道为什么它会在 viewDidLoad 之后执行,但是在我从代码中删除 viewWillAppear 函数之后,问题就解决了。 这不是答案,你是在向 OP 提问,应该是评论 感谢您的反馈。这是我第一次回答问题,我对社区很陌生。我把最后一句话改成了建议。

以上是关于ARKit 无法识别参考图像的主要内容,如果未能解决你的问题,请参考以下文章

ARKit 和 Vuforia - 标记识别

Tesseract 无法识别单个字符

Pytesseract 无法识别图像中的简单文本

Tkinter 错误:无法识别图像文件中的数据

Core ML iOS 11 无法正确识别图像

如何使 MODI 无法识别旋转图像?