如何在 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))
现在我想识别 ARFrame 的 capturedImage 上的文本,然后在屏幕上显示绑定框。可能吗?
我从官方知道如何识别单个图像上的文本tutorial,我的问题是如何将归一化框坐标转换为视口坐标。
请帮忙,非常感谢!!!
Try looking at this git repo. 我自己弄乱了它,它不是性能最好的,但这应该给你一个开始。
根据@Banane42的回答,我找到了ARkit
和VNRecognizeTextRequest
背后的理论
- ARKit Sceneview 的
capturedImage
比您看到的要宽。检查下图。我做了一个小程序,有一个imageView
来显示整个图像,背景图像是场景视图区域。
场景视图或图像的坐标源自top left
角,x-axis
-> 右侧和y-axis
-> 底部。但是 VNRequest
returns 的 boundingBox
的坐标起源于 bottom left
角和 x-axis
-> 右边和 y-axis
-> 顶部。
如果你使用request.regionOfInterest
,这个ROI应该是相对于整个图像的归一化坐标。返回的 VNRequest boundingBox
是相对于 ROI 框的标准化坐标。
我的应用终于可以正常运行了。这非常复杂。所以要小心!
我看过ARKit官方教程RealtimeNumberReader,它使用了AVCaptureSession和一个特定的函数layerRectConverted 仅用于 AVCaptureSession 将坐标从边界框转换为屏幕坐标。
let rect = layer.layerRectConverted(fromMetadataOutputRect: box.applying(self.visionToAVFTransform))
现在我想识别 ARFrame 的 capturedImage 上的文本,然后在屏幕上显示绑定框。可能吗?
我从官方知道如何识别单个图像上的文本tutorial,我的问题是如何将归一化框坐标转换为视口坐标。
请帮忙,非常感谢!!!
Try looking at this git repo. 我自己弄乱了它,它不是性能最好的,但这应该给你一个开始。
根据@Banane42的回答,我找到了ARkit
和VNRecognizeTextRequest
- ARKit Sceneview 的
capturedImage
比您看到的要宽。检查下图。我做了一个小程序,有一个imageView
来显示整个图像,背景图像是场景视图区域。
场景视图或图像的坐标源自
top left
角,x-axis
-> 右侧和y-axis
-> 底部。但是VNRequest
returns 的boundingBox
的坐标起源于bottom left
角和x-axis
-> 右边和y-axis
-> 顶部。如果你使用
request.regionOfInterest
,这个ROI应该是相对于整个图像的归一化坐标。返回的VNRequest boundingBox
是相对于 ROI 框的标准化坐标。
我的应用终于可以正常运行了。这非常复杂。所以要小心!