Общие сведения об отслеживании QR-кодов
Чтобы получить доступ к репозиторию GitHub для примера QR-кода, выполните следующие действия:
С помощью HoloLens 2 и иммерсивных гарнитур вы можете обнаруживать QR-коды в среде вокруг гарнитуры, устанавливая систему координат в реальном расположении каждого кода. Вы также можете отображать голограммы в одном расположении на нескольких устройствах, чтобы создать общий интерфейс. После включения веб-камеры устройства вы будете распознавать QR-коды в последних версиях проектов. Чтобы получить наилучшие результаты в рабочей среде, рекомендуется ознакомиться с разделом рекомендаций .
В этой статье описано следующее:
- Поддерживаемые устройства для отслеживания QR-кода
- Поддерживаемые версии QR-кода
- Рекомендации по обнаружению QR-кода
- Устранение неполадок и часто задаваемые вопросы
- Какие возможности необходимы?
- Разделы справки обеспечить работу функции отслеживания QR-кода на HoloLens 2 устройствах?
- Где найти файлы подключаемого модуля API?
- Разделы справки подготовить UWP к использованию Microsoft.MixedReality.QR.QRCodeWatcher?
- Разделы справки подготовить Unity с помощью Microsoft.MixedReality.QR.QRCodeWatcher?
- Как создавать QR-коды?
- Что делать, если отслеживание QR-кода не работает в целом?
- Какова точность?
- Насколько близко я должен быть к QR-коду, чтобы обнаружить его?
- Почему не удается прочитать QR-коды с логотипами?
- Qr-коды обнаружены, так почему я не получаю данных?
- Сохраняются ли QR-коды на уровне "пробел" или на уровне приложения?
- Как это работает с базовой платформой? Где они сохраняются?
- Разделы справки отлаживать приложение в Visual Studio при получении сообщения об ошибке "
Microsoft.MixedReality.QR.pdb
Не найдено"?
Поддержка устройств
Функция | HoloLens (1-го поколения) | HoloLens 2 | Иммерсивные гарнитуры |
---|---|---|---|
Обнаружение QR-кода | ✔️ | ✔️ |
Примечание
Отслеживание QR-кода с помощью иммерсивных гарнитур Windows Mixed Reality на настольных компьютерах поддерживается в Windows 10 версии 2004 и более поздних версиях. Используйте API, Microsoft.MixedReality.QRCodeWatcher.IsSupported()
чтобы определить, поддерживается ли эта функция на текущем устройстве.
Поддерживаемые версии QR-кода
В следующей таблице перечислены поддерживаемые и неподдерживаемые версии QR-кода.
Версии QR-кода | |
---|---|
Поддерживается: |
|
Не поддерживается: |
|
Рекомендации по обнаружению QR-кода
Тихие зоны вокруг QR-кодов
Для правильного чтения QR-коды требуют поля вокруг всех сторон кода. Это поле не должно содержать печатного содержимого и должно иметь ширину четырех модулей (один черный квадрат в коде).
Спецификация QR содержит дополнительные сведения о тихих зонах.
Освещение и фон
Качество обнаружения QR-кода подвержено различным освещению и фону.
При нормальных условиях освещения обещите достаточную контрастность для черных и белых модулей для повышения производительности.
В экстремальных условиях освещения с ярким освещением или темным фоном можно попытаться уменьшить и отрегулировать контрастность, что может повысить скорость обнаружения QR-кода. Белый фон в QR-коде можно уменьшить с 255 вниз.
Размер QR-кодов
Windows Mixed Reality устройства не работают с QR-кодами со сторонами меньше 5 см.
Для QR-кодов со сторонами от 5 см до 10 см устройство должно быть довольно близко для обнаружения кода. Обнаружение кода может занять больше времени.
Точное время обнаружения кодов зависит не только от размера QR-кодов, но и от того, насколько далеко вы находитесь от кода. Перемещение ближе к коду поможет сместить проблемы с размером.
Расстояние и угловое положение от QR-кода
Камеры отслеживания могут обнаруживать только определенный уровень детализации. Для небольших кодов (менее 10 см по бокам) вы должны быть довольно близко. Для QR-кода версии 1 размером от 10 см до 25 см минимальное расстояние обнаружения составляет от 0,15 до 0,5 метра.
Расстояние обнаружения для размера увеличивается линейно, но также зависит от поддерживаемой версии QR-кода или размера модуля. Чем выше версия, тем меньше модулей, которые можно обнаружить только в более близком расположении. Вы также можете попробовать микро-QR-коды, если вы хотите, чтобы расстояние обнаружения было больше. Функция обнаружения QR работает с диапазоном углов += 45 градусов, чтобы обеспечить правильное разрешение для обнаружения кода.
Другие рекомендации по обнаружению:
- QR-коды на изогнутых поверхностях не поддерживаются.
- Поддерживается ориентация в плоскости. Вне плоскости должно быть <= +-45, глядя прямо на, чтобы иметь лучшее обнаружение.
- Физический размер QR-кода должен иметь модули не менее 2/3 пикселей. Примечание. В более поздних версиях QR-кодов будут содержаться модули меньшего размера.
Сведения о компромиссной связи между расстоянием и размером QR-кода для оптимального обнаружения см. на следующем графике:
Важно!
Всегда убедитесь, что у вас достаточно контрастности и правильной границы.
Управление данными QR-кода
Windows Mixed Reality устройства обнаруживают QR-коды на уровне системы в драйвере. При перезагрузке устройства или перезапуске драйвера журнал обнаруженных QR-кодов очищается. Qr-коды, повторно выделенные, обрабатываются как новые объекты.
Рекомендуется настроить приложение так, чтобы игнорировать QR-коды старше определенной метки времени, которую можно указать в приложении. API QR-кода указывает время последнего обнаружения. Большинство разработчиков приложений используют системное время при запуске приложения, чтобы определить время обнаружения QR-кода.
Данные QR-кода не зависят от приложения. После запуска приложения будет предоставлен список доступных QR-кодов. Разработчик приложения определит, какие QR-коды относятся к этому приложению.
Размещение QR-кода в пространстве
Рекомендации по размещению QR-кодов см. в разделе Рекомендации по среде для HoloLens.
Устранение неполадок и часто задаваемые вопросы
Какие возможности необходимы?
Вам потребуется возможность веб-камеры , добавленная в манифест (флажок в разделе Возможности Unity). Если вы создаете как стандартный проект UWP, он также находится в package.appxmanifest
в проекте решения.
Запросите доступ, вызвав следующую функцию:
#if WINDOWS_UWP
async QRCodeWatcher.RequestAccessAsync();
#endif
Состояние доступа должно быть .(status == QRCodeWatcherAccessStatus::Allowed)
Если доступ запрещен, функция возвратит доступ запрещен при запуске QRTracking
.
Этот API следует вызывать перед созданием QRCodeWatcher
объекта .
Если вы запускаете проект из Unity, необходимо также убедиться, что вы вызываете из потока пользовательского интерфейса. В противном случае API всегда будет возвращать отклонено. Дополнительные сведения см. в разделе Класс AppCallbacks в руководстве по Unity.
Дополнительные сведения о настройке проекта для Unity см. в статье Настройка Unity для Windows Mixed Reality.
Разделы справки обеспечить работу функции отслеживания QR-кода на HoloLens 2 устройствах?
Отслеживание QR-кодов выполняется автоматически на HoloLens 2, и вам потребуется добавить в приложение возможность "веб-камеры".
Где найти файлы подключаемого модуля API?
Все необходимые файлы и документацию можно найти здесь.
https://www.nuget.org/packages/Microsoft.MixedReality.QR
Разделы справки подготовить UWP к использованию Microsoft.MixedReality.QR.QRCodeWatcher?
Распакуйте необходимые файлы с помощью пакета NuGet.
Добавьте ссылку на в
Microsoft.MixedReality.QR.winmd
проекте и начните использовать API.Добавьте правильные версии архитектуры подключаемых модулей и используйте их соответствующим образом в сборке.
Разделы справки подготовить Unity с помощью Microsoft.MixedReality.QR.QRCodeWatcher?
Используйте NuGet для Unity и наведите указатель на указанный выше пакет NuGet.
Как создавать QR-коды?
Ознакомьтесь с генератором QR-кода. Вот один из примеров.
Что делать, если отслеживание QR-кода не работает в целом?
- Поддерживается ли версия QR-кода? Мы не поддерживаем версии с высокой плотностью, такие как версия 40. Ничего выше версии 10 не гарантируется; Версии выше 20 не поддерживаются.
- Вы достаточно близко к QR-коду? Просмотр расстояния и углового положения от QR-кода.
- Как освещение? Существует известная проблема, из-за которой обнаружение становится трудным, когда QR-код находится на темном фоне окружающей среды- QR-код будет вымываться на камеру из-за высокой контрастности. Дополнительные сведения см. в разделе Освещение и фон.
Какова точность?
При обнаружении в одном кадре размер должен иметь не более 1 % ошибок от фактического размера. Например, код размером 10 см может составлять до +/- 1 мм в измеренном размере. При непрерывном обнаружении положение кода может сместиться на +/- 2,5 мм. После перемещения за пределы диапазона обнаружения позиция предыдущего обнаружения будет зависеть от ошибки карты.
Насколько близко я должен быть к QR-коду, чтобы обнаружить его?
Расстояние, очевидно, зависит от размера QR-кода, а также от его версии. Дополнительные сведения см. в разделе Расстояние и угловое положение от QR-кода.
- На HoloLens 2 для QR-кода версии 1, варьируясь от 5 см сторон до 25 см, минимальное расстояние обнаружения колеблется от 0,25 м до 0,5 метра. Самый дальний из них может быть обнаружен от примерно 0,5 м для наименьшего кода до двух метров для большего.
- На Windows Mixed Reality эти расстояния для размеров уменьшается вдвое.
- Для любых кодов большего, экстраполировать — расстояние обнаружения для размера увеличивается линейно. Для кода меньшего размера обнаружение просто не будет происходить — 4–5 см — это наименьший, который мы можем обнаружить.
Почему не удается прочитать QR-коды с логотипами?
В настоящее время мы не поддерживаем QR-коды с логотипами.
Qr-коды обнаружены, так почему я не получаю данных?
- Если платформа не может декодировать QR-код, данные не будут. Вы можете использовать поток и интерпретировать данные с помощью открытого исходного кода.
- Некоторые функции, такие как добавление структуры, не поддерживаются.
Дополнительные сведения см. в статье Поддерживаемые версии QR-кода.
Сохраняются ли QR-коды на уровне "пробел" или на уровне приложения?
QR-коды сохраняются на системном уровне в сеансе драйвера или сеансе загрузки в HoloLens. Дополнительные сведения см. в статье Управление данными QR-кода.
Как это работает с базовой платформой? Где они сохраняются?
Обнаруженные QR-коды сохраняются в памяти драйвером.
Разделы справки отлаживать приложение в Visual Studio при получении сообщения об ошибке "Microsoft.MixedReality.QR.pdb
Не найдено"?
Загрузка символов для Microsoft.MixedReality.QR.dll
пропущена, так как она не указана в списке включенных модулей.
Воспроизведение
Выполните действия, чтобы воспроизвести это поведение:
- Установка Microsoft.MixedReality.QR (NuGet) и MRTK
- Попробуйте выполнить отладку
Вы сможете отлаживать приложение с помощью Microsoft.MixedReality.QR.dll, но библиотека DLL не найдена:
Рекомендуемое решение
Мы работаем над добавлением символов в следующий выпуск. Тем временем вы по-прежнему сможете отлаживать приложение, исключив библиотеку DLL в параметрах Visual Studio:
Дополнительные сведения см. в разделе Настройка параметров Visual Studio.
Существует ли ограничение на количество QR-кодов, которые можно сканировать в сеансе?
Существует ограничение в 100 QR-кодов, сохраненных на уровне системы в драйвере, в течение 10 минут.
Изменился ли процесс сглаживания QR-кода?
Процесс сглаживания QR-кода изменился после 20H2: от сглаживания поз до сглаживания размера. Чтобы отменить изменения поведение предыдущего процесса сглаживания, следует применить алгоритм сглаживания, если новые данные о позе QR-кода обнаруживаются в течение 5 секунд или 10 см от ранее обнаруженного кадра. Данные преобразования смешиваются с помощью взвешивого соотношения 90 % текущего кадра и 10 % предыдущего кадра.