ARSCNView显示ARFrame的哪一部分?

时间:2019-07-01 09:16:38

标签: ios arkit coreml

我正在尝试使用ARKit创建对象检测器应用。 捕获的ARFrame传递到使用TuriCreate创建的对象检测器,该检测器为检测到的对象提供BoundingBoxes。尝试在ARSCNView上绘制这些边界框时,它们似乎与正确位置未对齐。

这是我进行预测的设置。

捕获的ARFrame给出CVPixelBuffer,这是照相机捕获的图像。 pixelBuffer的大小始终为(1920 x 1440),然后将其提供给VNCoreMLRequest进行预测。将imageCropAndScaleOption设置为.scaleFill以确保将整个pixelBuffer调整为预期的输入大小。

visionRequest.imageCropAndScaleOption = .scaleFill

接收到的预测类型为VNRecognizedObjectObservation,其中包含边界框。预测的边界框是一个标准化的边界框,其坐标从左下角开始,需要沿y轴翻转。

然后使用VNImageRectForNormalizedRect方法将flippedBoundingBox缩放到SceneView的帧,以将其绘制到正确的位置。

但是SceneView可以限制为任何尺寸。通过用不同的尺寸约束sceneView,我检查了基于景视图的帧显示的captureImage的部分是否不同。

capturedImage始终具有1920x1440的大小,与SceneView的帧无关。我该如何获取SceneView正在显示的CaptureImage的一部分?

我在WWDC19上浏览了Apple提供的ARDice应用程序,但没有任何帮助。

0 个答案:

没有答案