Какая часть ARFrame отображается ARSCNView? - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь создать приложение для обнаружения объектов, используя ARKit.Захваченный ARFrame передается в детектор объектов, созданный с помощью TuriCreate, который предоставляет BoundingBoxes для обнаруженных объектов.При попытке нарисовать эти ограничивающие рамки на ARSCNView, они кажутся смещенными относительно их правильного положения.

Вот моя установка для получения прогнозов ..

Захвачено ARFrame дает CVPixelBuffer, чтоэто изображение, снятое камерой.PixelBuffer всегда имеет размер (1920 x 1440), который затем предоставляется VNCoreMLRequest для предоставления прогнозов.Установите для imageCropAndScaleOption значение .scaleFill, чтобы убедиться, что весь pixelBuffer изменен до ожидаемого ввода.

visionRequest.imageCropAndScaleOption = .scaleFill

Полученные прогнозы имеют тип VNRecognizedObjectObservation, который содержит ограничивающий прямоугольник.Ограничительный прямоугольник из прогноза представляет собой нормализованный ограничивающий прямоугольник с координатами снизу слева. Его необходимо перевернуть вдоль оси y.

Затем flippedBoundingBox масштабируется до кадра SceneView с использованием метода VNImageRectForNormalizedRect, чтобы нарисовать его вего правильное местоположение.

Но SceneView можно ограничить любым измерением.Ограничив sceneView разными размерами, я проверил, что отображаемая часть capturedImage отличается в зависимости от кадра sceneView.

CaptureII всегда имеет размер 1920x1440, независимо от кадра sceneView.Как получить ту часть захватываемого изображения, которую показывает sceneView?

Я прошел через приложение ARDice, предоставленное Apple на WWDC19, но не смог получить никакой помощи.

...