7

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

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

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

4

2 回答 2

2

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

你应该:

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

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

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

于 2017-06-30T16:55:48.233 回答
-1

这是查找水平表面的小演示代码。在#Swift5 Github

于 2019-07-19T13:13:59.070 回答