从 ARReferenceImage 获取 UIImage 或 CIImage
Getting a UIImage or CIImage from ARReferenceImage
我正在使用 ARKit
在 ARAnchors
上做一些动画。我的图像存储在 AR Resource Group
中,如下所示。
因此,可以像下面那样访问它们,以便将它们作为跟踪图像加载到我的会话中。但是,我还想对这些相同的图像进行一些单独的操作,因此需要以 CIImages
或 UIImages
的方式访问它们。现在我必须将它们单独导入到我的项目中,因为似乎没有办法从 ARReferenceImage
中提取图像。有没有办法做到这一点?使用 AR Resource Group
非常方便,因为它会在编译前显示有关潜在冲突和性能较低的标记的相关警告。我还假设如果我要将我的 PNG 图像转换为 CIImages
然后转换为我的 viewDidLoad()
中的 ARReferenceImage
或通过一些类似的方式加载应用程序将花费更多时间。
guard let trackedImages = ARReferenceImage.referenceImages(inGroupNamed: "Photos", bundle: Bundle.main) else {
print("No images available")
return
}
在 Xcode 中创建 ARReferenceImage
不会将原始图像放入应用的资产目录中,因此原始图像在 运行 时不可用。 (相反,ARKit 将图像预处理为一种形式,使识别更高效,同时使用更少的存储空间。)
如果您想将图像同时用于 ARKit 识别和视觉显示(或其他处理),您需要将其包含在资产目录中两次——一次作为 AR 参考图像,然后再次作为正常 (UIImage
) 资产。
或者,您可以将它作为普通图像添加到您的资产目录中,然后在 运行 时从中创建一个 ARReferenceImage
— class 有一个初始化程序,需要 CGImage
。 (在这种情况下,使用资产目录的 AR Reference Images 区域预检您的图像并确保它们适合识别可能仍然有用,即使您没有以这种方式交付它们也是如此。
我正在使用 ARKit
在 ARAnchors
上做一些动画。我的图像存储在 AR Resource Group
中,如下所示。
因此,可以像下面那样访问它们,以便将它们作为跟踪图像加载到我的会话中。但是,我还想对这些相同的图像进行一些单独的操作,因此需要以 CIImages
或 UIImages
的方式访问它们。现在我必须将它们单独导入到我的项目中,因为似乎没有办法从 ARReferenceImage
中提取图像。有没有办法做到这一点?使用 AR Resource Group
非常方便,因为它会在编译前显示有关潜在冲突和性能较低的标记的相关警告。我还假设如果我要将我的 PNG 图像转换为 CIImages
然后转换为我的 viewDidLoad()
中的 ARReferenceImage
或通过一些类似的方式加载应用程序将花费更多时间。
guard let trackedImages = ARReferenceImage.referenceImages(inGroupNamed: "Photos", bundle: Bundle.main) else {
print("No images available")
return
}
在 Xcode 中创建 ARReferenceImage
不会将原始图像放入应用的资产目录中,因此原始图像在 运行 时不可用。 (相反,ARKit 将图像预处理为一种形式,使识别更高效,同时使用更少的存储空间。)
如果您想将图像同时用于 ARKit 识别和视觉显示(或其他处理),您需要将其包含在资产目录中两次——一次作为 AR 参考图像,然后再次作为正常 (UIImage
) 资产。
或者,您可以将它作为普通图像添加到您的资产目录中,然后在 运行 时从中创建一个 ARReferenceImage
— class 有一个初始化程序,需要 CGImage
。 (在这种情况下,使用资产目录的 AR Reference Images 区域预检您的图像并确保它们适合识别可能仍然有用,即使您没有以这种方式交付它们也是如此。