ios - ARKit 能否将特定表面检测为平面?

标签 ios swift augmented-reality arkit coreml

使用 iOS 11 和 iOS 12 以及 ARKit,我们目前能够检测水平表面上的平面,并且我们还可以在表面上可视化该平面。

我想知道我们是否可以通过某种图像文件声明我们想要检测平面的特定表面? (可能会忽略 ARKit 从其他表面检测到的所有其他平面)

如果那不可能,那么我们是否可以捕获检测到的平面(通过图像),然后我们可以通过识别该特定表面的 CoreML 模型对其进行处理?

最佳答案

ARKit 目前不支持这样的东西。您确实可以将检测到的飞机捕获为图像,如果您能够通过核心 ML 实时匹配它,我相信很多人都会感兴趣!

你应该:

  • 获取平面角的 3D 位置
  • 使用 sceneView.projectPoint 找到他们在帧中的 2D 位置
  • currentFrame.capturedImage 中提取帧
  • 对要留在平面上的图像进行仿射变换,重新投影为矩形
  • 做一些机器学习/图像处理来检测匹配

请记住,ARKit 矩形检测通常没有很好地对齐,并且可能只有整个平面的一部分。

最后,不幸的是,ARKit 公开的特征点没有用,因为它们不包含用于跨帧匹配特征点的任何特征,Apple 也没有说明他们使用什么算法来计算特征点。

关于ios - ARKit 能否将特定表面检测为平面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44791534/

相关文章:

c# - 单色触摸 : Loading screen

ios - SCNHitResult-画线到击中点

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

uitableview - 如何快速获取所选行的textLabel?

c++ - 将 CVD 图像转换为彩色 OpenCV 图像

ios - 如何快速打开文件并在其中附加字符串

ios - 智能横幅停止工作

ios - 如何在 Swift 中上传多张图片

opengl - 使用 ARToolkit 在增强现实应用程序中显示文本消息

react-native - 使用 React 原生 ViroReact 像面部过滤器一样进行 Snap Chat