ARKit能否将特定曲面检测为平面?

时间:2017-06-27 23:34:14

标签: ios swift augmented-reality arkit coreml

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

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

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

2 个答案:

答案 0 :(得分:2)

ARKit此刻暂不支持此类内容。您确实可以捕获检测到的图像作为图像,如果您能够通过核心ML实时匹配,我相信很多人会感兴趣!

你应该:

  • 获取飞机角落的3D位置
  • 使用sceneView.projectPoint
  • 在框架中找到他们的2D位置
  • currentFrame.capturedImage
  • 中提取框架
  • 对要离开平面的图像进行仿射变换,重新投影到矩形
  • 进行一些ML /图像处理以检测匹配

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

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

答案 1 :(得分:0)

以下是用于查找水平面的小演示代码。在#Swift5 Github