Freigeben über


Übersicht über die QR-Codenachverfolgung

So greifen Sie auf das GitHub-Repository für das QR-Codebeispiel zu:

Mit Windows Mixed Reality- und HoloLens-Headsets kann Ihre App QR-Codes in der Umgebung um das Headset erkennen und ein Koordinatensystem an der realen Position jedes Codes einrichten. Sie können Hologramme auch an derselben Stelle auf mehreren Geräten rendern, um eine gemeinsame Erfahrung zu erstellen. Nachdem Sie die Webcam Ihres Geräts aktiviert haben, erkennen Sie QR-Codes in den neuesten Versionen Ihrer Projekte. Um optimale Ergebnisse für die Produktion zu erzielen, empfiehlt es sich, den Abschnitt mit den bewährten Methoden zu lesen.

In diesem Artikel erfahren Sie mehr über Folgendes:

Geräteunterstützung

Produkt HoloLens 1. Generation HoloLens 2 Immersive Headsets
OpenXR ✔️ (mit OpenXR Runtime Version 113 und OpenXR XR_MSFT_scene_marker Erweiterung)
Mixed Reality Unity-Plug-In ✔️ (mit OpenXR Runtime Version 113 und Mixed Reality Unity-Plug-In ARMarkerManager)
Legacy QR SDK ✔️ ✔️ ✔️

Hinweis

Im Folgenden finden Sie spezifisch für die älteren QR-Code-APIs. Es wird empfohlen, stattdessen die OpenXR-Implementierung für QR-Codes zu verwenden.

Mithilfe des Legacy-QR-Code-SDK wird die QR-Codenachverfolgung mit immersiven Windows Mixed Reality-Headsets auf Desktop-PCs unter Windows 10 Version 2004 und höher unterstützt. Verwenden Sie die Microsoft.MixedReality.QRCodeWatcher.IsSupported() API, um zu bestimmen, ob das Feature auf dem aktuellen Gerät unterstützt wird.

Unterstützte QR-Codeversionen

In der folgenden Tabelle sind die unterstützten und nicht unterstützten QR-Codeversionen aufgeführt:

  QR-Codeversionen
Abgestützt:
  • QR Code Versionen 1 - 10
  • Mikro-QR-Codes M1-M4
  • Alle Codierungen
Nicht unterstützt:
  • QR-Codes 10 - 20 (nicht vollständig unterstützt)
  • QR-Codes ab Version 21
  • Optimierte Module, z. B. zirkuläre Module, Reflexionen, invertiert (schwarz/weiß).
  • Logos
  • Strukturierte Anfüge

    Bewährte Methoden für die QR-Codeerkennung

    Ruhezonen rund um QR-Codes

    Um richtig gelesen zu werden, benötigen QR-Codes einen Rand um alle Seiten des Codes. Dieser Rand darf keinen gedruckten Inhalt enthalten und sollte vier Module (ein einziges schwarzes Quadrat im Code) breit sein.

    Die offizielle QR-Code-Dokumentation enthält weitere Informationen zu Ruhezonen.

    Beleuchtung und Hintergrund

    Die Qualität der QR-Codeerkennung ist anfällig für unterschiedliche Beleuchtung und Hintergrund.

    • Sorgen Sie bei normalen Lichtverhältnissen für ausreichend Kontrast für die Schwarz/Weiß-Module für eine bessere Leistung.

    • Bei extremen Lichtverhältnissen mit hellem Licht oder dunklem Hintergrund können Sie versuchen, den Kontrast zu reduzieren und anzupassen, was die Erkennungsrate des QR-Codes verbessern könnte. Der weiße Hintergrund im QR-Code kann von 255 nach unten reduziert werden.

    Größe von QR-Codes

    Windows Mixed Reality- und HoloLens-Geräte funktionieren nicht mit QR-Codes, deren Seiten kleiner als 5 cm sind.

    Bei QR-Codes mit Seiten von 5 cm bis 10 cm muss das Gerät relativ nah sein, um den Code zu erkennen. Es kann länger dauern als der Durchschnitt, um den Code zu erkennen.

    Die genaue Zeit zum Erkennen von Codes hängt nicht nur von der Größe der QR-Codes ab, sondern auch davon, wie weit Sie vom Code entfernt sind. Wenn Sie näher an den Code herangehen, können Sie Probleme mit der Größe ausgleichen.

    Abstand und Winkelposition vom QR-Code

    Die Tracking-Kameras können nur einen bestimmten Detailgrad erkennen. Bei kleinen Codes (weniger als 10 cm an den Seiten) müssen Sie sich relativ nah befinden. Bei einem QR-Code der Version 1 von 10 cm bis 25 cm beträgt der minimale Erkennungsabstand zwischen 0,15 Metern und 0,5 Metern.

    Der Erkennungsabstand für die Größe erhöht sich linear, hängt aber auch von der unterstützten QR-Version oder Modulgröße ab. Je höher die Version, desto kleiner die Module, die nur von einer näheren Position erkannt werden können. Sie können auch Mikro-QR-Codes ausprobieren, wenn die Entfernung der Erkennung länger sein soll. Die QR-Erkennung funktioniert mit einem Bereich von Winkeln += 45 Deg, um sicherzustellen, dass wir über die richtige Auflösung verfügen, um den Code zu erkennen.

    Weitere Überlegungen zur Erkennung:

    • QR-Codes auf gekrümmten Oberflächen werden nicht unterstützt.
    • Die Ausrichtung auf ebener Ebene wird unterstützt. Out of plane sollte <= +-45 sein, um eine bessere Erkennung zu erhalten.
    • Die physische Größe des QR-Codes sollte Module von mindestens 2/3 Pixeln aufweisen. Hinweis: Höhere Versionen von QR-Codes verfügen über kleinere Module.

    Die Kompromissbeziehung zwischen Entfernung und Größe des QR-Codes für eine optimale Erkennung finden Sie im folgenden Diagramm:

    Größendiagramm für QR-Code

    Wichtig

    Stellen Sie immer sicher, dass Sie über genügend Kontrast und einen ordnungsgemäßen Rahmen verfügen.

    Verwalten von QR-Codedaten

    Windows Mixed Reality- und HoloLens-Geräte erkennen QR-Codes auf Systemebene im Treiber. Wenn das Gerät neu gestartet wird oder der Treiber neu gestartet wird, wird der Verlauf der erkannten QR-Codes gelöscht. Wiedererkannte QR-Codes werden als neue Objekte behandelt.

    Es wird empfohlen, Ihre App so zu konfigurieren, dass QR-Codes ignoriert werden, die älter sind als ein bestimmter Zeitstempel, der innerhalb der App angegeben werden kann. Die QR-Code-API gibt den Zeitpunkt an, zu dem die letzte Erkennung stattgefunden hat. Die meisten App-Entwickler verwenden die Systemzeit beim Starten der App, um zu bestimmen, wann ein QR-Code erkannt wird.

    QR-Codedaten sind nicht app-spezifisch. Nach dem Start der App wird eine Liste der verfügbaren QR-Codes bereitgestellt. Der App-Entwickler bestimmt, welche QR-Codes für diese App relevant sind.

    Platzierung von QR-Code in einem Raum

    Empfehlungen dazu, wo und wie QR-Codes platziert werden, finden Sie unter Überlegungen zur Umgebung für HoloLens.

    Problembehandlung und häufig gestellte Fragen

    Welche Funktionen werden benötigt?

    Um die QR-Codenachverfolgung in Ihrer HoloLens-Anwendung zu aktivieren, fügen Sie die Webcamfunktion zum Manifest der Anwendung hinzu. Wenn Sie in Unity entwickeln, können Sie dies über die Playereinstellungen konfigurieren.

    Darüber hinaus werden Benutzer möglicherweise vom Dialogfeld "Berechtigungen" aufgefordert, Ihrer App-Webcam Berechtigungen zu erteilen. Dies geschieht nur einmal während der Lebensdauer einer App. In Fällen, in denen die App explizit Webcam-Zugriff anfordert, wird das Dialogfeld nicht erneut angezeigt.

    Bei Unity-Apps mit der WebCam-Funktion kann die Aktivierung ARMarkerManager in einer Szene dazu führen, dass das Dialogfeld für die Webcamberechtigung angezeigt wird.

    Bei nativen OpenXR C++-Apps können anfängliche Aufrufe von xrComputeNewSceneMSFT mit enthalten XrNewSceneComputeInfoMSFT::requestedFeaturesXR_SCENE_COMPUTE_FEATURE_MARKER_MSFT das Berechtigungsdialogfeld auslösen.

    Hinweis

    Im Folgenden finden Sie spezifisch für die älteren QR-Code-APIs. Es wird empfohlen, stattdessen die OpenXR-Implementierung für QR-Codes zu verwenden.

    Sie müssen die Webcam-Funktion zu Ihrem Manifest hinzufügen (Kontrollkästchen in Unity-Funktionen). Wenn Sie als UWP-Standardprojekt erstellen, befindet es sich auch im Projektmappenprojekt package.appxmanifest.

    Fordern Sie im Legacy-QR-Code-SDK den Zugriff an, indem Sie die folgende Methode aufrufen:

    #if WINDOWS_UWP
    
    async QRCodeWatcher.RequestAccessAsync();
    
    #endif
    

    Der Zugriff status sollte sein(status == QRCodeWatcherAccessStatus::Allowed).

    Wenn der Zugriff verweigert wird, gibt das Feature den verweigerten Zugriff zurück, wenn Sie starten QRTracking.

    Diese API sollte aufgerufen werden, bevor Sie das QRCodeWatcher -Objekt erstellen.

    Wenn Sie das Projekt über Unity ausführen, müssen Sie auch sicherstellen, dass Sie über den UI-Thread aufrufen. Andernfalls gibt die API immer verweigert zurück. Weitere Informationen finden Sie unter AppCallbacks-Klasse im Unity-Handbuch.

    Weitere Informationen zum Einrichten Ihres Projekts für Unity finden Sie unter Konfigurieren von Unity für Windows Mixed Reality.

    Gewusst wie das Feature zur Nachverfolgung von QR-Code auf HoloLens 2 Geräten funktionieren?

    Die QR-Nachverfolgung erfolgt bei HoloLens 2 automatisch, und Sie müssen Ihrer App die Funktion "Webcam" hinzufügen.

    Wo finde ich die API-Plug-In-Dateien?

    Anwendungen sollten die OpenXR-Runtime von HoloLen zum Erkennen von QR-Codes verwenden. OpenXR für Windows Mixed Reality (113.2403.5001 oder höher) bietet QR-Codeunterstützung auf HoloLens-Geräten.

    Für Unity-Apps wird die Unterstützung von QR-Code über die Komponente bereitgestellt, die ARMarkerManager mit Mixed Reality OpenXR-Plug-In bereitgestellt wird.

    Verwenden Sie für die Unterstützung von QR-Code in Nicht-Unity-Apps die OpenXR-XR_MSFT_scene_marker-Erweiterung .

    Hinweis

    Im Folgenden finden Sie spezifisch für die älteren QR-Code-APIs. Es wird empfohlen, stattdessen die OpenXR-Implementierung für QR-Codes zu verwenden.

    Alle erforderlichen Dateien und Dokumentationen finden Sie hier auf NuGet:

    Microsoft.MixedReality.QR

    Gewusst wie eine Unity-App für die Verwendung von ARMarkerManager zum Erkennen von QR-Codes vorbereiten?

    In Unity-Apps wird die ARMarkerManager Komponente verwendet, um zu verarbeiten, wie die QR-Codeerkennung in einer physischen Umgebung in einer Szene dargestellt wird. ARMarkerManager liefert:

    • Ereignisse zum Benachrichtigen von Abonnenten, wenn dem Manager ein erkannter QR-Code hinzugefügt, aktualisiert oder entfernt wurde.

    • Eine Sammlung von ARMarker Trackables für QR-Codes, die erkannt werden.

    • Methoden, die Daten für QR-Codes zurückgeben, wie durch die nachverfolgbare ID angegeben.

    Um in Ihrer App zu verwendenARMarkerManager, müssen Sie das Mixed Reality OpenXR-Plug-In-Paket importieren.

    So importieren Sie das Paket:

    1. Laden Sie das Mixed Reality Featuretool herunter, und führen Sie es aus.
    2. Installieren Sie das OpenXR-Plug-In.

    Ausführliche Anweisungen zur Verwendung des Tools finden Sie unter Willkommen beim Mixed Reality FeatureTool.

    Das folgende allgemeine Verfahren ist:

    1. Aktivieren Sie in Ihrem Unity-Projekt WebCam-Funktionen .
    2. Erstellen Sie ein Prefab, und fügen Sie die ARMarker Komponente wie gezeigt an:
      Prefab konfiguriert
    3. Öffnen Sie eine Szene, in der BEIM Ausführen QR-Codes erkannt werden sollen.
    4. Fügen Sie ARMarkerManager an ein GameObject in Ihrer Szene an, und legen Sie Marker Prefab auf das von Ihnen erstellte Prefab fest.
      Prefab angegeben

    Ausführlichere Anweisungen und Informationen finden Sie unter QR-Codes in Unity.

    Ein Beispiel für die Verwendung von QR-Codes in Ihrer Unity-App finden Sie im Beispielszenario für QR-Code auf GitHub.

    Gewusst wie eine Nicht-Unity-App für die Verwendung von OpenXR zum Erkennen von QR-Codes vorbereiten?

    Die QR-Codeerkennung in OpenXR wird über die XR_MSFT_scene_marker-Erweiterung bereitgestellt. Diese Erweiterung ermöglicht das Nachverfolgen mehrerer QR-Codes und kann Größe, Position, letzter Erkennungszeitstempel, UUID und gepufferte QR-Codedaten für erkannte QR-Codes bereitstellen.

    Um die Unterstützung von QR-Code zu aktivieren, müssen sowohl die erweiterungen XR_MSFT_scene_marker als auch XR_MSFT_scene_understanding aktiviert sein.

    Eine ausführliche Schritt-für-Schritt-Anleitung finden Sie in der Übersicht über XR_MSFT_scene_marker-Erweiterung in der OpenXR 1.0-Spezifikation.

    Ein Beispiel für die Verwendung von QR-Codes finden Sie unter Scene_QRCode.cpp im SceneUnderstandingUwp-Beispiel auf GitHub.

    Gewusst wie eine UWP für die Verwendung von Microsoft.MixedReality.QR.QRCodeWatcher vorbereiten?

    Hinweis

    Im Folgenden finden Sie spezifisch für die älteren QR-Code-APIs. Es wird empfohlen, stattdessen die OpenXR-Implementierung für QR-Codes zu verwenden.

    • Verwenden Sie das NuGet-Paket, um die erforderlichen Dateien zu entpacken.

    • Fügen Sie in Ihrem Projekt einen Verweis auf hinzu Microsoft.MixedReality.QR.winmd , und beginnen Sie mit der Verwendung der API.

    • Fügen Sie die richtigen Architekturversionen der Plug-Ins hinzu, und verwenden Sie sie entsprechend im Build.

    Gewusst wie Unity mit microsoft.MixedReality.QR.QRCodeWatcher vorbereiten?

    Hinweis

    Im Folgenden finden Sie spezifisch für die älteren QR-Code-APIs. Es wird empfohlen, stattdessen die OpenXR-Implementierung für QR-Codes zu verwenden.

    Verwenden Sie NuGet für Unity, und zeigen Sie auf das oben genannte NuGet-Paket.

    Wie kann ich QR-Codes erstellen?

    Sehen Sie sich jeden QR-Code-Generator an.

    Was kann ich tun, wenn die QR-Codenachverfolgung im Allgemeinen nicht funktioniert?

    • Ist die QR-Code-Version eine unterstützte Version? Versionen mit hoher Dichte wie Version 40 werden nicht unterstützt. Nichts über Version 10 ist garantiert; Versionen über 20 werden nicht unterstützt.

    • Sind Sie nah genug am QR-Code? Sehen Sie sich den Abstand und die Winkelposition vom QR-Code an.

    • Wie ist die Beleuchtung? Es gibt ein bekanntes Problem, bei dem die Erkennung schwierig wird, wenn sich der QR-Code auf einem dunklen Umgebungshintergrund befindet – der QR-Code wird aufgrund des hohen Kontrasts auf der Kamera ausgewaschen angezeigt. Weitere Informationen finden Sie unter Beleuchtung und Hintergrund.

    Wie ist die Genauigkeit?

    Wenn in einem einzelnen Frame erkannt wird, wird davon ausgegangen, dass die Größe höchstens einen Fehler von 1 % gegenüber der tatsächlichen Größe aufweist. Beispielsweise kann ein 10-cm-Code in der gemessenen Größe bis zu +/- 1 mm außerhalb der Größe sein. Bei kontinuierlicher Erkennung kann die Position eines Codes um bis zu +/- 2,5 mm abweichen. Sobald Sie sich aus dem Erkennungsbereich entfernt haben, ist die Position einer vorherigen Erkennung dem Kartenfehler gleichgestellt.

    Wie nah muss ich am QR-Code sein, um ihn zu erkennen?

    Die Entfernung hängt natürlich von der Größe des QR-Codes und auch von derEn Version ab. Weitere Informationen finden Sie unter Abstand und Winkelposition vom QR-Code.

    • Auf HoloLens 2 reicht bei einem QR-Code der Version 1, der von 5 cm Seiten bis 25 cm Seiten variiert, der minimale Erkennungsabstand zwischen 0,25 Metern und 0,5 Metern. Die am weitesten zu erkennende Zahl reicht von ca. 0,5 m für den kleinsten Code bis zu zwei Metern für die größeren.

    • Auf Windows Mixed Reality werden diese Abstände für die Größen halbiert.

    • Für alle Codes, die größer sind, extrapolieren – der Erkennungsabstand für die Größe nimmt linear zu. Bei kleinerem Code tritt die Erkennung einfach nicht auf– 4-5 cm ist die kleinste, die wir erkennen können.

    Warum kann ich keine QR-Codes mit Logos lesen?

    QR-Codes mit Logos werden nicht unterstützt.

    Die QR-Codes werden erkannt, warum erhalte ich also keine Daten?

    • Wenn die Plattform den QR-Code nicht decodieren kann, sind keine Daten vorhanden. Sie können den Stream verwenden und die Daten mithilfe von Open-Source-Code interpretieren.

    • Einige Features, z. B. strukturanfügen, werden nicht unterstützt.

    Weitere Informationen finden Sie unter Welche QR-Code-Versionen werden unterstützt?.

    Werden QR-Codes auf "Space"-Ebene oder App-Ebene gespeichert?

    QR-Codes werden auf Systemebene in der Treibersitzung oder Startsitzung auf HoloLens gespeichert. Weitere Informationen finden Sie unter Verwalten von QR-Codedaten.

    Wie funktioniert dies mit der zugrunde liegenden Plattform? Wo bleiben sie?

    Erkannte QR-Codes werden vom Treiber im Speicher beibehalten.

    Gewusst wie die App in Visual Studio debuggen, wenn ich die Fehlermeldung "Microsoft.MixedReality.QR.pdbNicht gefunden" erhalte?

    Hinweis

    Im Folgenden finden Sie spezifisch für die älteren QR-Code-APIs. Es wird empfohlen, stattdessen die OpenXR-Implementierung für QR-Codes zu verwenden.

    Das Laden von Symbolen für Microsoft.MixedReality.QR.dll wurde übersprungen, da es in der Liste der enthaltenen Module nicht angegeben ist.

    So reproduzieren Sie

    Hinweis

    Im Folgenden finden Sie spezifisch für die älteren QR-Code-APIs. Es wird empfohlen, stattdessen die OpenXR-Implementierung für QR-Codes zu verwenden.

    Führen Sie die Schritte aus, um dieses Verhalten zu reproduzieren:

    1. Installieren von Microsoft.MixedReality.QR (NuGet) und MRTK
    2. Versuchen Sie, zu debuggen

    Sie sollten die App mit Microsoft.MixedReality.QR.dll debuggen können, aber die DLL wird nicht gefunden:

    Microsoft.MixedReality.QR.pdb Fehlermeldung nicht gefunden

    Hinweis

    Im Folgenden finden Sie spezifisch für die älteren QR-Code-APIs. Es wird empfohlen, stattdessen die OpenXR-Implementierung für QR-Codes zu verwenden.

    Wir arbeiten daran, der nächsten Version Symbole hinzuzufügen. In der Zwischenzeit sollten Sie Ihre App weiterhin debuggen können, indem Sie die DLL in den Visual Studio-Optionen ausschließen:

    Ausschließen der DLL in Visual Studio-Optionen

    Weitere Informationen finden Sie unter Konfigurieren der Einstellungen von Visual Studio.

    Gibt es eine Beschränkung, wie viele QR-Codes in einer Sitzung gescannt werden können?

    Innerhalb von 10 Minuten werden auf Systemebene im Fahrer maximal 100 QR-Codes gespeichert.

    Hat sich der Glättungsprozess für QR-Code geändert?

    Der QR-Code glättet sich nach 20H2 von der Posenglättung zur Größenglättung. Um das Verhalten auf den vorherigen Glättungsprozess zu rückgängig machen, würde man einen Glättungsalgorithmus anwenden, wenn die neuen QR-Code-Posendaten innerhalb von 5 Sekunden oder 10 cm vom zuvor erkannten Frame erkannt werden. Die Transformationsdaten werden über ein gewichtetes Verhältnis von 90 % des aktuellen Frames mit 10 % des vorherigen Frames gemischt.

    Siehe auch