如何在 ARFrame 捕获图像的屏幕上显示文本识别边界框? (iOS)

how to display text recognition bounding box on screen of a ARFrame captured image? (iOS)

我看过ARKit官方教程RealtimeNumberReader,它使用了AVCaptureSession和一个特定的函数layerRectConverted 仅用于 AVCaptureSession 将坐标从边界框转换为屏幕坐标。

let rect = layer.layerRectConverted(fromMetadataOutputRect: box.applying(self.visionToAVFTransform))

现在我想识别 ARFramecapturedImage 上的文本,然后在屏幕上显示绑定框。可能吗?

我从官方知道如何识别单个图像上的文本tutorial,我的问题是如何将归一化框坐标转换为视口坐标。

请帮忙,非常感谢!!!

Try looking at this git repo. 我自己弄乱了它,它不是性能最好的,但这应该给你一个开始。

根据@Banane42的回答,我找到了ARkitVNRecognizeTextRequest

背后的理论
  1. ARKit Sceneview 的 capturedImage 比您看到的要宽。检查下图。我做了一个小程序,有一个imageView来显示整个图像,背景图像是场景视图区域。
  1. 场景视图或图像的坐标源自top left角,x-axis -> 右侧和y-axis -> 底部。但是 VNRequest returns 的 boundingBox 的坐标起源于 bottom left 角和 x-axis -> 右边和 y-axis -> 顶部。

  2. 如果你使用request.regionOfInterest,这个ROI应该是相对于整个图像的归一化坐标。返回的 VNRequest boundingBox 是相对于 ROI 框的标准化坐标。

我的应用终于可以正常运行了。这非常复杂。所以要小心!