ios - 如何使用 ARKit 或 Apple Vision 测量 3d 对象的尺寸?
问题描述
使用 iPhone 摄像头(可能是 ARKit、Apple Vision、CoreML/mlmodels 等的某种组合),您将如何测量对象的尺寸(宽度、高度、深度)?物体是放在桌子上的小东西
使用 mlmodel,您可以训练 ML 执行特定对象的对象检测。这只允许您在 2d 屏幕上围绕检测到的对象绘制一个框。
我希望能够使用手机摄像头查看并可能在对象周围移动以确定对象的尺寸/实际大小。
我已经阅读了有关边缘检测或形状检测的信息,但我认为我不需要图像来对整体嵌套边缘检测进行图像处理。
ARKit 擅长使用手机的硬件来足够准确地测量小尺度距离。
一种可能的方法是在要比较的对象旁边放置一个已知大小的参考对象(如四分之一),但这会带来复杂性和麻烦。
理想情况下,我想将 iPhone 相机对准桌子上的小物体,也许环顾四周(围绕物体旋转一点),然后对物体大小进行一组大致的测量,并为物体的 ARAnchor实际位置。
解决方案
让用户通过点击对象的角来进行 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。
推荐阅读
- c# - 是否可以创建 typeof(T).getElementOf() 类型的数组,并在通用方法中对其进行初始化
? - python - 优化python代码 - 在未排序的列表中搜索嵌套循环作为索引位置需要保留
- qt - 如何创建自定义后缀规则以使用另一个目录中的标题?
- angular - 如何使用 AWS CloudFront S3 Lambda 部署 Angular Universal App 而不是运行 EC2 服务器?
- postman - 每次请求后邮递员分钟不更新
- windows - 如何将变量放入批处理文件中的 FOR /F cmd?
- tfs - Azure DevOps API - 测试执行信息 - 测试用例组的最后结果和运行日期
- javascript - 在 NodeJS 中生成 PDF 并保存到 MySql
- delphi - 水平翻转 TPath 形状数据
- linux - 在 bash 读取循环中,处理 ! (感叹号)并捕获 CTRL-Z