从ARReferenceImage获取UIImage或CIImage

时间:2019-01-18 09:41:00

标签: ios swift arkit aranchor

我正在使用ARKitARAnchors上做一些动画。我的图像存储在AR Resource Group中,如下所示。

enter image description here

因此,可以像下面这样访问它们,以便将它们作为跟踪图像加载到我的会话中。但是,我还想对这些相同的图像进行一些单独的操作,因此需要以CIImagesUIImages的身份访问它们。现在,我不得不将它们分别导入到我的项目中,因为似乎没有一种方法可以从ARReferenceImage中提取图像。有没有办法做到这一点?使用AR Resource Group十分方便,因为它会在编译前显示有关潜在冲突的警告以及性能较低的标记。我还假设,如果要将我的PNG图像转换成CIImages或通过ARReferenceImage转换成viewDidLoad()或通过类似的方式,将会花费更多的时间来加载应用。

guard let trackedImages = ARReferenceImage.referenceImages(inGroupNamed: "Photos", bundle: Bundle.main) else {
    print("No images available")
    return
}

1 个答案:

答案 0 :(得分:1)

在Xcode中创建ARReferenceImage不会将原始图像放入应用程序的资产目录中,因此原始图像在运行时不可用。 (相反,ARKit将图像预处理为一种形式,从而可以在减少存储空间的同时提高识别效率。)

如果您想同时使用图像进行ARKit识别和视觉显示(或其他处理),则需要两次将其包含在资产目录中-一次作为AR参考图像,然后再次作为普通图像( UIImage)资产。

或者,您可以将其作为普通映像添加到资产目录中,然后在运行时从其创建一个ARReferenceImage-该类的初始化程序采用CGImage。 (在这种情况下,使用资产目录的“ AR参考图像”区域进行预检可能仍然有用,即使您未采用这种方式来交付它们,也要确保它们能被识别。