Я пытаюсь создать приложение для обнаружения объектов, используя 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, но не смог получить никакой помощи.