Как и многие другие разработчики, я погрузился в новую технологию Apple ARKit. Это великолепно. Однако для конкретного проекта я хотел бы иметь возможность распознавать (реальные) изображения на сцене, либо проецировать что-то на него (как это делает Vuforia с целевыми изображениями), либо использовать его для запуска события в мое приложение.
В своем исследовании о том, как этого добиться, я наткнулся на платформы Vision и CoreML от Apple. Это кажется многообещающим, хотя я еще не смог обернуть голову вокруг этого.
Насколько я понимаю, я смогу делать именно то, что хочу, находя прямоугольники с помощью инфраструктуры Vision и вводя их в модель CoreML, которая просто сравнивает ее с целевыми изображениями, которые я предварительно определил в модели. Затем он должен иметь возможность выкладывать, какое целевое изображение он нашел.
Хотя это звучит хорошо в моей голове, я еще не нашел способ сделать это. Как мне создать такую модель, и возможно ли это вообще?
3 ответа
Начиная с ARKit 1.5 (поставляемой с IOS 11.3 весной 2018 года), кажется, что функция, реализованная прямо поверх ARKit, решает эту проблему.
ARKit будет полностью поддерживать распознавание изображений. После распознавания изображения трехмерные координаты могут быть извлечены в качестве якоря, и поэтому на них может быть размещено содержимое.
Способность Vision
обнаруживать изображения была реализована в ARKit начиная с iOS 11.3+, поэтому с тех пор ARKit имеет подкласс ARImageAnchor
, который расширяет родительский класс ARAnchor
и соответствует протоколу ARTrackable
,
// Classes hierarchy and Protocol conformance...
ObjectiveC.NSObject: NSObjectProtocol
↳ ARKit.ARAnchor: ARAnchorCopying
↳ ARKit.ARImageAnchor: ARTrackable
Класс
ARWorldTrackingConfiguration
имеет свойство экземпляраdetectionImages
, которое на самом деле представляет собой набор изображений, которые ARKit пытается обнаружить в среде пользователя.
open var detectionImages: Set<ARReferenceImage>!
И
ARImageTrackingConfiguration
класс имеет свойство экземпляраtrackingImages
, которое также является набором, оно служит той же цели - ARKit пытается обнаружить и отследить его в среде пользователя.
open var trackingImages: Set<ARReferenceImage>
Таким образом, имея правильную конфигурацию и возможность автоматически получать ARImageAnchor
в ARSession, вы можете привязать любую геометрию к этому якору.
PS Если вы хотите узнать, как реализовать функцию обнаружения изображений в приложении ARKit, перейдите по ссылке этот пост .
Я нашел этот проект на Github несколько недель назад: Обнаружение прямоугольника комплекта AR
Я думаю, это именно то, что вы ищете ...
Похожие вопросы
Новые вопросы
swift
Swift - это безопасный, быстрый и выразительный язык программирования общего назначения, разработанный Apple Inc. для своих платформ и Linux. Swift с открытым исходным кодом. Используйте тег только для вопросов о языковых функциях или необходимости кода в Swift. Используйте теги [ios], [ipados], [macos], [watch-os], [tvos], [cocoa-touch] и [cocoa] для (не зависящих от языка) вопросов о платформах или фреймворках.