Как и многие другие разработчики, я погрузился в новую технологию Apple ARKit. Это великолепно. Однако для конкретного проекта я хотел бы иметь возможность распознавать (реальные) изображения на сцене, либо проецировать что-то на него (как это делает Vuforia с целевыми изображениями), либо использовать его для запуска события в мое приложение.

В своем исследовании о том, как этого добиться, я наткнулся на платформы Vision и CoreML от Apple. Это кажется многообещающим, хотя я еще не смог обернуть голову вокруг этого.

Насколько я понимаю, я смогу делать именно то, что хочу, находя прямоугольники с помощью инфраструктуры Vision и вводя их в модель CoreML, которая просто сравнивает ее с целевыми изображениями, которые я предварительно определил в модели. Затем он должен иметь возможность выкладывать, какое целевое изображение он нашел.

Хотя это звучит хорошо в моей голове, я еще не нашел способ сделать это. Как мне создать такую модель, и возможно ли это вообще?

10
Marc Van Deuren 11 Сен 2017 в 11:56

3 ответа

Лучший ответ

Начиная с ARKit 1.5 (поставляемой с IOS 11.3 весной 2018 года), кажется, что функция, реализованная прямо поверх ARKit, решает эту проблему.

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

0
Marc Van Deuren 6 Фев 2018 в 11:15

Способность 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, перейдите по ссылке этот пост .

0
Andy Fedoroff 29 Мар 2020 в 10:32

Я нашел этот проект на Github несколько недель назад: Обнаружение прямоугольника комплекта AR

Я думаю, это именно то, что вы ищете ...

3
Nico S. 11 Сен 2017 в 15:10