Overzicht van het bijhouden van QR-code

Toegang krijgen tot de GitHub-opslagplaats voor het QR-codevoorbeeld:

Met HoloLens 2 en immersive headsets kunt u QR-codes detecteren in de omgeving rond de headset, waarbij een coördinatensysteem wordt gecreëerd op de werkelijke locatie van elke code. U kunt ook hologrammen op dezelfde locatie op meerdere apparaten weergeven om een gedeelde ervaring te creëren. Zodra u de webcam van uw apparaat hebt ingeschakeld, herkent u QR-codes in de nieuwste versies van uw projecten. Voor de beste resultaten die in productie gaan, raden we u aan de sectie best practices te bekijken.

Dit artikel biedt meer informatie over:

Ondersteuning voor apparaten

Functie HoloLens 1e generatie HoloLens 2 Immersive headsets
DETECTIE VAN QR-code ✔️ ✔️

Notitie

Het bijhouden van QR-code met immersive Windows Mixed Reality headsets op desktop-pc's wordt ondersteund op Windows 10 versie 2004 en hoger. Gebruik de Microsoft.MixedReality.QRCodeWatcher.IsSupported() API om te bepalen of de functie wordt ondersteund op het huidige apparaat.

Ondersteunde QR-codeversies

De volgende tabel bevat de ondersteunde en niet-ondersteunde versies van QR-code:

  QR-codeversies
Ondersteund:
  • QR-versies 1 - 10
  • Micro QR-codes M1-M4
  • Alle coderingen
Niet ondersteund:
  • QR-codes 10 - 20 (deze kunnen werken, maar zijn niet gegarandeerd)
  • QR-codes 20+
  • Aangepaste modules, bijvoorbeeld: cirkelvormige modules, weerspiegelingen, omgekeerd (zwart/wit).
  • Logos
  • Gestructureerde toevoegingen

    Aanbevolen procedures voor detectie van QR-code

    Stille zones rond QR-codes

    Qr-codes kunnen alleen correct worden gelezen als er een marge rond alle zijden van de code is vereist. Deze marge mag geen gedrukte inhoud bevatten en moet vier modules (één zwart vierkant in de code) breed zijn.

    De QR-specificatie bevat meer informatie over stiltezones.

    Verlichting en achtergrond

    De detectiekwaliteit van DE QR-code is vatbaar voor verschillende verlichting en achtergrond.

    • Zorg onder normale lichtomstandigheden voor voldoende contrast voor de zwart-witmodules voor betere prestaties.

    • In extreme lichtomstandigheden met felle verlichting of donkere achtergrond, kunt u proberen het contrast te verminderen en aan te passen, wat de detectiesnelheid van DE QR-code kan verbeteren. De witte achtergrond in de QR-code kan worden verkleind van 255 naar beneden.

    Grootte van QR-codes

    Windows Mixed Reality apparaten werken niet met QR-codes met zijden kleiner dan 5 cm.

    Voor QR-codes met zijden variërend van 5 cm tot 10 cm, moet het apparaat vrij dicht bij de code zijn. Het kan langer duren om de code te detecteren.

    De exacte tijd voor het detecteren van codes is niet alleen afhankelijk van de grootte van de QR-codes, maar ook van hoe ver u van de code verwijderd bent. Als u dichter bij de code komt, kunt u problemen met de grootte oplossen.

    Afstand en hoekpositie van de QR-code

    De trackingcamera's kunnen alleen een bepaald detailniveau detecteren. Voor kleine codes (minder dan 10 cm langs de zijkanten) moet je redelijk dichtbij zijn. Voor een versie 1 QR-code die varieert van 10 cm tot 25 cm, ligt de minimale detectieafstand tussen 0,15 meter en 0,5 meter.

    De detectieafstand voor de grootte neemt lineair toe, maar is ook afhankelijk van de ondersteunde QR-versie of modulegrootte. Hoe hoger de versie, hoe kleiner de modules, die alleen vanaf een dichtere positie kunnen worden gedetecteerd. U kunt ook micro-QR-codes proberen als u wilt dat de afstand van de detectie langer is. QR-detectie werkt met een bereik van hoeken += 45 graden om ervoor te zorgen dat we de juiste resolutie hebben om de code te detecteren.

    Andere detectieoverwegingen:

    • QR-codes op gekromde oppervlakken worden niet ondersteund.
    • De richting in het vliegtuig wordt ondersteund. Uit het vliegtuig moet <= +-45 rechtdoor kijken om betere detectie te hebben.
    • De fysieke grootte van de QR-code moet modules van ten minste 2/3 pixels hebben. Opmerking: hogere versies van QR-codes hebben kleinere modules.

    Zie de volgende grafiek voor de verhouding tussen de afstand en de grootte van de QR-code voor optimale detectie:

    Afstandsdiagram met qr-codegrootte

    Belangrijk

    Zorg er altijd voor dat je voldoende contrast en een juiste rand hebt.

    QR-codegegevens beheren

    Windows Mixed Reality apparaten detecteren QR-codes op systeemniveau in het stuurprogramma. Wanneer het apparaat opnieuw wordt opgestart of het stuurprogramma opnieuw wordt opgestart, wordt de geschiedenis van de gedetecteerde QR-codes gewist. QR-codes die opnieuw worden gedetecteerd, worden behandeld als nieuwe objecten.

    We raden u aan uw app te configureren om QR-codes te negeren die ouder zijn dan een specifiek tijdstempel, dat in de app kan worden opgegeven. De QR-code-API geeft het tijdstip aan waarop de laatste detectie heeft plaatsgevonden. De meeste app-ontwikkelaars gebruiken de systeemtijd wanneer de app wordt gestart om te bepalen wanneer een QR-code wordt gedetecteerd.

    QR-codegegevens zijn niet app-specifiek. Wanneer de app wordt gestart, wordt er een lijst met beschikbare QR-codes opgegeven. De app-ontwikkelaar bepaalt welke QR-codes relevant zijn voor deze app.

    Plaatsing van QR-code in een ruimte

    Raadpleeg Overwegingen voor de omgeving voor HoloLens voor aanbevelingen over waar en hoe u QR-codes plaatst.

    Problemen oplossen en veelgestelde vragen

    Welke mogelijkheden zijn er nodig?

    U moet de webcamfunctie toevoegen aan uw manifest (selectievakje in Unity Capabilities). Als u bouwt als een standaard-UWP-project, bevindt het zich ook in het package.appxmanifest oplossingsproject.

    Vraag toegang aan door de volgende functie aan te roepen:

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

    De toegangsstatus moet zijn (status == QRCodeWatcherAccessStatus::Allowed).

    Als de toegang wordt geweigerd, retourneert de functie toegang geweigerd wanneer u de QRTrackingstart.

    Deze API moet worden aangeroepen voordat u het QRCodeWatcher object maakt.

    Als u het project uitvoert vanuit Unity, moet u er ook voor zorgen dat u aanroept vanuit de ui-thread. Anders retourneert de API altijd geweigerd. Zie de klasse AppCallbacks in de Unity Manual voor meer informatie.

    Zie Unity configureren voor Windows Mixed Reality voor meer informatie over het instellen van uw project voor Unity.

    Hoe kan ik ervoor zorgen dat de functie voor het bijhouden van QR-code werkt op HoloLens 2-apparaten?

    QR-tracking is automatisch op HoloLens 2 en u moet de mogelijkheid 'webcam' toevoegen aan uw app.

    Waar vind ik de API-invoegtoepassingsbestanden?

    Alle vereiste bestanden en documentatie vindt u hier.

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

    Hoe kan ik een UWP voorbereiden voor het gebruik van Microsoft.MixedReality.QR.QRCodeWatcher?

    • Gebruik het NuGet-pakket om de vereiste bestanden uit te pakken.

    • Voeg een verwijzing naar de Microsoft.MixedReality.QR.winmd toe in uw project en begin met het gebruik van de API.

    • Voeg de juiste architectuurversies van de invoegtoepassingen toe en gebruik deze dienovereenkomstig in de build.

    Hoe kan ik Unity voorbereiden met de Microsoft.MixedReality.QR.QRCodeWatcher?

    Gebruik NuGet voor Unity en wijs het bovenstaande NuGet-pakket aan.

    Hoe kan ik QR-codes maken?

    Bekijk een qr-codegenerator. Hier is een voorbeeld.

    Als het bijhouden van QR-code in het algemeen niet werkt, wat moet ik dan doen?

    • Is de qr-codeversie een ondersteunde versie? De high-densityversies, zoals versie 40, worden niet ondersteund. Niets boven versie 10 wordt gegarandeerd; versies ouder dan 20 worden niet ondersteund.
    • Ben je dicht genoeg bij de QR-code? Bekijk de afstand en hoekpositie van de QR-code.
    • Hoe is de verlichting? Er is een bekend probleem waarbij detectie moeilijk wordt wanneer de QR-code zich op een donkere omgevingsachtergrond bevindt. De QR-code wordt door hoog contrast uitgespoeld weergegeven op de camera. Zie belichting en achtergrond voor meer informatie.

    Wat is de nauwkeurigheid?

    Wanneer de grootte in één frame wordt gedetecteerd, wordt verwacht dat de grootte een fout van maximaal 1% heeft ten opzichte van de werkelijke grootte. Een code van 10 cm kan bijvoorbeeld tot +/- 1 mm af zijn in gemeten grootte. Bij continue detectie kan de positie van een code maximaal +/- 2,5 mm rondlopen. Zodra u buiten het detectiebereik bent gekomen, is de positie van een eerdere detectie afhankelijk van de kaartfout.

    Hoe dicht moet ik bij de QR-code zijn om deze te detecteren?

    De afstand is uiteraard afhankelijk van de grootte van de QR-code, en ook van de versie ervan. Zie afstand en hoekpositie van de QR-code voor meer informatie.

    • Op HoloLens 2, voor een QR-code van versie 1, variërend van 5 cm zijden tot 25 cm zijden, varieert de minimale detectieafstand van 0,25 meter tot 0,5 meter. De verst van deze kan worden gedetecteerd van gaat van ongeveer 0,5 m voor de kleinste code tot twee meter voor de grotere.
    • Op Windows Mixed Reality worden deze afstanden voor de maten gehalveerd.
    • Voor codes die groter zijn, extrapoleren, neemt de detectieafstand voor grootte lineair toe. Voor elke code die kleiner is, wordt detectie gewoon niet uitgevoerd- --4-5 cm is de kleinste die we kunnen detecteren.

    Waarom kan ik geen QR-codes met logo's lezen?

    Momenteel bieden we geen ondersteuning voor QR-codes met logo's.

    De QR-codes worden gedetecteerd, dus waarom krijg ik geen gegevens?

    • Als het platform de QR-code niet kan decoderen, zijn er geen gegevens. U kunt de stream gebruiken en de gegevens interpreteren met behulp van opensource-code.
    • Sommige functies, zoals structuur toevoegen, worden niet ondersteund.

    Zie welke QR-codeversies worden ondersteund? voor meer informatie.

    Worden QR-codes opgeslagen op het niveau 'ruimte' of op app-niveau?

    QR-codes worden op systeemniveau opgeslagen in een stuurprogrammasessie of opstartsessie op HoloLens. Zie QR-codegegevens beheren voor meer informatie.

    Hoe werkt dat met het onderliggende platform? Waar blijven ze bestaan?

    Gedetecteerde QR-codes worden door het stuurprogramma in het geheugen bewaard.

    Hoe kan ik fouten in de app in Visual Studio op wanneer ik het foutbericht 'Microsoft.MixedReality.QR.pdbniet gevonden' ontvang?

    Het laden van symbolen voor Microsoft.MixedReality.QR.dll is overgeslagen omdat dit niet is opgegeven in de lijst met opgenomen modules.

    Reproduceren

    Volg de stappen om dit gedrag te reproduceren:

    1. Installeer Microsoft.MixedReality.QR (NuGet) en MRTK
    2. Probeer fouten op te sporen

    U moet fouten in de app kunnen opsporen met Microsoft.MixedReality.QR.dll, maar het DLL-bestand is niet gevonden:

    Foutbericht Microsoft.MixedReality.QR.pdb niet gevonden

    We werken aan het toevoegen van symbolen aan de volgende release. In de tussentijd moet u nog steeds fouten in uw app kunnen opsporen door de DLL uit te sluiten in de Visual Studio-opties:

    de DLL in Visual Studio-opties uitsluiten

    Zie De instellingen van Visual Studio configureren voor meer informatie.

    Is er een limiet voor het aantal QR-codes dat kan worden gescand in een sessie?

    Er is een limiet van 100 QR-codes opgeslagen op systeemniveau in de driver, binnen 10 minuten.

    Is het proces voor het vloeiend maken van DE QR-code gewijzigd?

    Het proces voor het vloeiend maken van QR-code is gewijzigd na 20H2, van het vloeiend maken van de houding tot het gladmaken van de grootte. Om het gedrag terug te keren naar het vorige vereffeningsproces, zou men een vloeiend algoritme toepassen als de nieuwe qr-codepositiegegevens binnen 5 seconden of 10 cm van het eerder gedetecteerde frame worden gedetecteerd. De transformatiegegevens worden gemengd via een gewogen verhouding van 90% van het huidige frame met 10% van het vorige frame.

    Zie ook