Übersicht zur QR-Codenachverfolgung

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

Mit HoloLens 2 und immersiven Headsets können Sie 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 Benutzeroberfläche 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 bewährte Methoden zu lesen.

In diesem Artikel erfahren Sie mehr über die folgenden Themen:

Geräteunterstützung

Funktion HoloLens (1. Generation) HoloLens 2 Immersive Headsets
QR-Code-Erkennung ✔️ ✔️

Hinweis

Die QR-Code Nachverfolgung mit immersiven Windows Mixed Reality-Headsets auf Desktop-PCs wird 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-Code-Versionen
Unterstützt:
  • QR-Versionen 1 - 10
  • Mikro-QR-Codes M1-M4
  • Alle Codierungen
Nicht unterstützt:
  • QR-Codes 10 - 20 (diese können funktionieren, sind aber nicht garantiert)
  • QR-Codes 20+
  • Optimierte Module, z. B. kreisförmige Module, Reflexionen, invertiert (schwarz/weiß).
  • Logos
  • Strukturierte Anfüge

    Bewährte Methoden für die Erkennung von QR-Codes

    Ruhezonen um QR-Codes

    Um ordnungsgemäß gelesen zu werden, erfordern QR-Codes einen Rand, der alle Seiten des Codes umgibt. Dieser Rand darf keine gedruckten Inhalte enthalten und sollte vier Module (ein einzelnes schwarzes Quadrat im Code) breit sein.

    Die QR-Spezifikation enthält weitere Informationen zu stillen Zonen.

    Beleuchtung und Hintergrund

    Die Erkennungsqualität von QR-Code reagiert auf wechselnde Beleuchtungs- und Hintergrundverhältnisse.

    • Bieten Sie unter normalen Lichtverhältnissen genügend Kontrast für die Schwarz/Weiß-Module, um eine bessere Leistung zu erzielen.

    • Bei extremen Lichtverhältnissen mit hellem Licht oder dunklem Hintergrund können Sie versuchen, den Kontrast zu reduzieren und anzupassen, was die QR-Codeerkennungsrate 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 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 ziemlich nah sein, um den Code zu erkennen. Es kann länger dauern, bis der Code erkannt wird.

    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. Näher an den Code heranzugehen, hilft dabei, Größenprobleme zu beheben.

    Abstand und Winkelposition gegenüber dem QR-Code

    Die Überwachungskameras besitzen eine eingeschränkte Detailauflösung. Für kleine Codes (weniger als 10 cm entlang der Seiten) müssen Sie ziemlich nah sein. 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 nimmt linear zu, 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 der Entfernungsabstand der Erkennung länger sein soll. Die QR-Erkennung funktioniert in einem Winkelbereich von += 45°, um sicherzustellen, dass die Auflösung zum Erkennen des Codes ausreicht.

    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 haben.
    • 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:

    QR-Code-Größen-Entfernungsdiagramm

    Wichtig

    Stellen Sie immer sicher, dass Genügend Kontrast und ein ordnungsgemäßer Rahmen vorhanden sind.

    Verwalten von QR-Codedaten

    Windows Mixed Reality-Geräte erkennen QR-Codes auf der 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 als ein bestimmter Zeitstempel sind, der innerhalb der App angegeben werden kann. Die QR-Code-API gibt den Zeitpunkt der letzten Erkennung an. Die meisten App-Entwickler verwenden die Systemzeit beim Starten der App, um den Zeitpunkt zu bestimmen, zu dem ein QR-Code erkannt wird.

    QR-Codedaten sind nicht appspezifisch. 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-Codes im Raum

    Empfehlungen zur Platzierung von QR-Codes finden Sie unter Umgebungsüberlegungen für HoloLens.

    Problembehandlung und häufig gestellte Fragen

    Welche Funktionen werden benötigt?

    Sie benötigen die Webcamfunktion , die Ihrem Manifest hinzugefügt wird (Kontrollkästchen in Unity-Funktionen). Wenn Sie als UWP-Standardprojekt erstellen, befindet es sich auch im package.appxmanifest Projektmappenprojekt.

    Fordern Sie den Zugriff an, indem Sie die folgende Funktion 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 zugriff verweigert 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 Qr-Code-Tracking-Feature auf HoloLens 2 Geräten funktionieren lassen?

    Die QR-Nachverfolgung erfolgt automatisch auf HoloLens 2, und Sie benötigen die Funktion "Webcam", die Ihrer App hinzugefügt wird.

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

    Alle erforderlichen Dateien und Dokumentationen finden Sie hier.

    https://www.nuget.org/packages/Microsoft.MixedReality.QR

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

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

    • Fügen Sie einen Verweis auf die Microsoft.MixedReality.QR.winmd in Ihrem Projekt hinzu, 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?

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

    Wie kann ich QR-Codes erstellen?

    Sehen Sie sich einen QR-Code-Generator an– hier ist ein Beispiel.

    Was mache ich, wenn qr code tracking 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 dem QR-Code nahe genug? Sehen Sie sich den Abstand und die Winkelposition des QR-Codes 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 eines hohen Kontrasts in die Kamera ausgewaschen. Weitere Informationen finden Sie unter Beleuchtung und Hintergrund.

    Wie ist die Genauigkeit?

    Wenn sie in einem einzelnen Frame erkannt wird, wird erwartet, 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 leer sein. Bei kontinuierlicher Erkennung kann sich die Position eines Codes um bis zu +/- 2,5 mm bewegen. Nachdem Sie sich aus dem Erkennungsbereich entfernt haben, ist die Position einer vorherigen Erkennung bis zur Gnade des Kartenfehlers.

    Wie nah muss ich dem 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 für einen QR-Code der Version 1 zwischen 5 cm Seiten und 25 cm Seiten reicht der minimale Erkennungsabstand von 0,25 Metern bis 0,5 Metern. Die am weitesten erkennbare Reicht von ca. 0,5 m für den kleinsten Code bis zu zwei Metern für den größeren.
    • Bei Windows Mixed Reality werden diese Entfernungen 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?

    Derzeit unterstützen wir keine QR-Codes mit Logos.

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

    • Wenn die Plattform den QR-Code nicht decodieren kann, werden keine Daten angezeigt. Sie können den Stream verwenden und die Daten mithilfe von Open-Source-Code interpretieren.
    • Einige Features, z. B. das Anfügen von Strukturen, werden nicht unterstützt.

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

    Werden QR-Codes auf der Ebene "Space" oder auf 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 gespeichert.

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

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

    So reproduzieren

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

    1. Installieren von Microsoft.MixedReality.QR (NuGet) und MRTK
    2. Debuggen

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

    Microsoft.MixedReality.QR.pdb fehlermeldung nicht gefunden

    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 sind auf Systemebene im Fahrer 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 Glättung der Größe. 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 des zuvor erkannten Frames erkannt werden. Die Transformationsdaten werden über ein gewichtetes Verhältnis von 90 % des aktuellen Frames mit 10 % des vorherigen Frames gemischt.

    Weitere Informationen