我正在使用ARKitARAnchors上制作一些动画。我的图像存储在下面这样的AR Resource Group中。
ios - 从ARReferenceImage获取UIImage或CIImage-LMLPHP
因此,可以像下面这样访问它们,以便将它们作为跟踪图像加载到我的会话中。但是,我也希望对这些相同的图像执行一些单独的操作,因此需要以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
}

最佳答案

在Xcode中创建ARReferenceImages不会将原始图像放入应用程序的资产目录中,因此原始图像在运行时不可用。(相反,ARKit会将图像预处理成一种形式,使识别更有效,同时使用更少的存储空间。)
如果要将图像同时用于标记识别和视觉显示(或其他处理),则需要将其包含在资产目录中两次-一次作为应收账款参考图像,然后再次作为普通(UIImage)资产。
或者,可以将其作为普通图像添加到资产目录中,然后在运行时从中创建一个ARReferenceImage-该类有一个接受CGImage的初始值设定项。(在这种情况下,使用资产目录中的AR Reference Images区域来预处理图像并确保它们有利于识别,即使您不是以这种方式传递图像,这仍然是有用的。

关于ios - 从ARReferenceImage获取UIImage或CIImage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54251199/

10-10 23:32