首页 > 解决方案 > 如何使用 ARKit 或 Apple Vision 测量 3d 对象的尺寸?

问题描述

使用 iPhone 摄像头(可能是 ARKit、Apple Vision、CoreML/mlmodels 等的某种组合),您将如何测量对象的尺寸(宽度、高度、深度)?物体是放在桌子上的小东西

使用 mlmodel,您可以训练 ML 执行特定对象的对象检测。这只允许您在 2d 屏幕上围绕检测到的对象绘制一个框。

我希望能够使用手机摄像头查看并可能在对象周围移动以确定对象的尺寸/实际大小。

我已经阅读了有关边缘检测或形状检测的信息,但我认为我不需要图像来对整体嵌套边缘检测进行图像处理。

ARKit 擅长使用手机的硬件来足够准确地测量小尺度距离。

一种可能的方法是在要比较的对象旁边放置一个已知大小的参考对象(如四分之一),但这会带来复杂性和麻烦。

理想情况下,我想将 iPhone 相机对准桌子上的小物体,也许环顾四周(围绕物体旋转一点),然后对物体大小进行一组大致的测量,并为物体的 ARAnchor实际位置。

标签: ioscameracomputer-visionarkitapple-vision

解决方案


让用户通过点击对象的角来进行 ARHittest。在那里你会在 ARWorld 中获得一个节点位置。从那里您可以计算对象的特定长度等...

let newPoint = CGPoint(*e.g. the point the user taps*)
let hitTestResults = sceneView.hitTest(newPoint, types: .estimatedHorizontalPlane)
guard let hitTestResult = hitTestResults.first else { return }
 print("Your Nodes position: (htr.worldTransform.translation)")

然后计算这些点之间的距离。

您也可以在没有用户点击的情况下进行此 ARHitTest。然后通过视觉检测对象并在适当的时候进行 ARHitTest。


推荐阅读