Общие сведения об отслеживании QR-кодов

Чтобы получить доступ к репозиторию GitHub для примера QR-кода, выполните следующие действия:

С помощью HoloLens 2 и иммерсивных гарнитур вы можете обнаруживать QR-коды в среде вокруг гарнитуры, устанавливая систему координат в реальном расположении каждого кода. Вы также можете отображать голограммы в одном расположении на нескольких устройствах, чтобы создать общий интерфейс. После включения веб-камеры устройства вы будете распознавать QR-коды в последних версиях проектов. Чтобы получить наилучшие результаты в рабочей среде, рекомендуется ознакомиться с разделом рекомендаций .

В этой статье описано следующее:

Поддержка устройств

Функция HoloLens (1-го поколения) HoloLens 2 Иммерсивные гарнитуры
Обнаружение QR-кода ✔️ ✔️

Примечание

Отслеживание QR-кода с помощью иммерсивных гарнитур Windows Mixed Reality на настольных компьютерах поддерживается в Windows 10 версии 2004 и более поздних версиях. Используйте API, Microsoft.MixedReality.QRCodeWatcher.IsSupported() чтобы определить, поддерживается ли эта функция на текущем устройстве.

Поддерживаемые версии QR-кода

В следующей таблице перечислены поддерживаемые и неподдерживаемые версии QR-кода.

  Версии QR-кода
Поддерживается:
  • Версии QR 1–10
  • Микро QR-коды M1-M4
  • Все кодировки
Не поддерживается:
  • QR-коды 10–20 (они могут работать, но не гарантированы)
  • QR-коды 20+
  • Модули с изменениями, например циклические модули, отражения, инвертированные (черный/белый).
  • Логотипы
  • Структурированные добавления

    Рекомендации по обнаружению 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-кода

    Важно!

    Всегда убедитесь, что у вас достаточно контрастности и правильной границы.

    Управление данными 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 пропущена, так как она не указана в списке включенных модулей.

    Воспроизведение

    Выполните действия, чтобы воспроизвести это поведение:

    1. Установка Microsoft.MixedReality.QR (NuGet) и MRTK
    2. Попробуйте выполнить отладку

    Вы сможете отлаживать приложение с помощью Microsoft.MixedReality.QR.dll, но библиотека DLL не найдена:

    Сообщение об ошибке Microsoft.MixedReality.QR.pdb не найдено

    Мы работаем над добавлением символов в следующий выпуск. Тем временем вы по-прежнему сможете отлаживать приложение, исключив библиотеку DLL в параметрах Visual Studio:

    исключение библиотеки DLL в параметрах Visual Studio

    Дополнительные сведения см. в разделе Настройка параметров Visual Studio.

    Существует ли ограничение на количество QR-кодов, которые можно сканировать в сеансе?

    Существует ограничение в 100 QR-кодов, сохраненных на уровне системы в драйвере, в течение 10 минут.

    Изменился ли процесс сглаживания QR-кода?

    Процесс сглаживания QR-кода изменился после 20H2: от сглаживания поз до сглаживания размера. Чтобы отменить изменения поведение предыдущего процесса сглаживания, следует применить алгоритм сглаживания, если новые данные о позе QR-кода обнаруживаются в течение 5 секунд или 10 см от ранее обнаруженного кадра. Данные преобразования смешиваются с помощью взвешивого соотношения 90 % текущего кадра и 10 % предыдущего кадра.

    См. также раздел