使用 iOS 11,iOS 12 和 ARKit,我们目前能够检测水平面上的平面,并且我们还可以可视化该面上的平面。
我想知道是否可以通过某种图像文件声明要在其中检测平面的特定表面? (可能忽略了 ARKit 从其他表面检测到的所有其他平面)
如果不可能,那么我们能否捕获(通过图像)检测到的平面,然后通过CoreML模型对其进行处理以识别该特定表面?
CoreML
ARKit 目前不支持这种情况。您确实可以捕获检测为图像的飞机,并且如果您能够通过核心 ML 实时进行匹配,那么我相信很多人都会感兴趣!
你应该:
获取平面角的 3D 位置
使用sceneView.projectPoint在帧中找到其 2D 位置
sceneView.projectPoint
从currentFrame.capturedImage中提取帧
currentFrame.capturedImage
对要与您的飞机一起保留的图像进行仿射变换,然后重新投影为矩形
做一些 ML /图像处理来检测匹配项
请记住,ARKit 矩形检测通常无法很好地对齐,并且只能包含整个平面的一部分。
最后,不幸的是,ARKit 公开的特征点没有用,因为它们不包含用于跨帧匹配特征点的任何特征,Apple 也没有说明它们使用什么算法来计算其特征点。
这里是用于查找水平面的小演示代码.在#Swift5 Github中
2 回答
ARKit 目前不支持这种情况。您确实可以捕获检测为图像的飞机,并且如果您能够通过核心 ML 实时进行匹配,那么我相信很多人都会感兴趣!
你应该:
获取平面角的 3D 位置
使用
sceneView.projectPoint
在帧中找到其 2D 位置从
currentFrame.capturedImage
中提取帧对要与您的飞机一起保留的图像进行仿射变换,然后重新投影为矩形
做一些 ML /图像处理来检测匹配项
请记住,ARKit 矩形检测通常无法很好地对齐,并且只能包含整个平面的一部分。
最后,不幸的是,ARKit 公开的特征点没有用,因为它们不包含用于跨帧匹配特征点的任何特征,Apple 也没有说明它们使用什么算法来计算其特征点。
这里是用于查找水平面的小演示代码.在#Swift5 Github中