为了使用基于计算机视觉的室内导航,最初我们需要扫描区域并放置模型、对象和路径。保存 map ,我们可以稍后在打开应用程序时加载。问题是当要映射的区域很大时并且有多个楼层,用移动设备扫描该区域会很困难。
是否有另一种绘制大面积 map 的方法?如果有的话,是基于 3d map 的解决方案吗?问题是设备可以识别场景并放置模型和对象。如果我可以创建精确的 3d map 并将其集成统一,以便我可以将对象和模型统一放置并创建一个应用程序。因此,当我们打开应用程序时,设备会扫描并识别场景并将对象放置在那里,而不是进入场景并使用移动设备进行映射。
最佳答案
获取点云世界地图最稳健的方法是使用带有 ARKit
的 Apple 设备多次扫描整个区域,并将其作为世界地图数据保存到本地存储。
对于持久的 AR 体验,您可以保存扫描的世界地图:
func writeWorldMap(_ worldMap: ARWorldMap, to url: URL) throws {
let data = try NSKeyedArchiver.archivedData(withRootObject: worldMap,
requiringSecureCoding: true)
try data.write(to: url)
}
然后在需要时检索它:
func loadWorldMap(from url: URL) throws -> ARWorldMap {
let mapData = try Data(contentsOf: url)
guard let worldMap = try NSKeyedUnarchiver.unarchivedObject(ofClass: ARWorldMap.self,
from: mapData) else {
throw ARError(.invalidWorldMap)
}
return worldMap
}
除此之外,您还必须使用打印/绘制的视觉内容(也就是基于图像为 CoreML
和 Vision
框架预训练的 ML 模型)来检测用户在该世界地图中的确切位置(您可以为此目的使用交通标志,如下图所示)。
关于swift - 室内导航系统利用计算机视觉进行大面积测绘的解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52620416/