Översikt över QR-kodspårning

Så här kommer du åt GitHub-lagringsplatsen för QR-kodexemplet:

Med HoloLens 2 och uppslukande headset kan du identifiera QR-koder i miljön runt headsetet och upprätta ett koordinatsystem på varje kods verkliga plats. Du kan också rendera hologram på samma plats på flera enheter för att skapa en delad upplevelse. När du har aktiverat enhetens webbkamera känner du igen QR-koder i de senaste versionerna av dina projekt. För bästa resultat i produktion rekommenderar vi att du läser avsnittet med metodtips .

I den här artikeln får du lära dig mer om:

Stöd för enheter

Funktion HoloLens första generationen HoloLens 2 Integrerande headset
Identifiering av QR-kod ✔️ ✔️

Anteckning

QR-kodspårning med avancerad Windows Mixed Reality headset på stationära datorer stöds på Windows 10 version 2004 och senare. Använd API:et Microsoft.MixedReality.QRCodeWatcher.IsSupported() för att avgöra om funktionen stöds på den aktuella enheten.

QR-kodversioner som stöds

I följande tabell visas de QR-kodversioner som stöds och som inte stöds:

  QR Code-versioner
Stöds:
  • QR-versioner 1–10
  • Mikro-QR-koder M1-M4
  • Alla kodningar
Stöds ej:
  • QR-koder 10–20 (dessa kan fungera, men är inte garanterade)
  • QR-koder 20+
  • Justerade moduler, till exempel cirkulära moduler, reflektioner, inverterade (svartvita).
  • Logotyper
  • Strukturerade tillägg

    Metodtips för identifiering av QR-kod

    Tysta zoner runt QR-koder

    För att kunna läsas korrekt kräver QR-koder en marginal runt alla sidor av koden. Marginalen får inte innehålla något tryckt innehåll och bör vara fyra moduler (en enda svart fyrkant i koden) bred.

    QR-specifikationen innehåller mer information om tysta zoner.

    Belysning och bakgrund

    QR-kodidentifieringskvaliteten är känslig för varierande belysning och bakgrund.

    • Under normala ljusförhållanden ger du tillräckligt med kontrast för de svartvita modulerna för bättre prestanda.

    • I extrema ljusförhållanden med ljus belysning eller mörk bakgrund kan du försöka minska och justera kontrasten, vilket kan förbättra QR-kodidentifieringshastigheten. Den vita bakgrunden i QR-koden kan minskas från 255 nedåt.

    Storleken på QR-koder

    Windows Mixed Reality enheter fungerar inte med QR-koder med sidor som är mindre än 5 cm.

    För QR-koder med sidor från 5 cm till 10 cm måste enheten vara ganska nära för att identifiera koden. Det kan ta längre tid att identifiera koden.

    Den exakta tiden för att identifiera koder beror inte bara på storleken på QR-koderna, utan hur långt bort du är från koden. Om du närmar dig koden kan du förskjuta problem med storleken.

    Avstånd och vinkelposition från QR-koden

    Spårningskamerorna kan bara identifiera en viss detaljnivå. För små koder (mindre än 10 cm längs sidorna) måste du vara ganska nära. För en QR-kod av version 1 som varierar från 10 cm till 25 cm är det minsta identifieringsavståndet mellan 0,15 och 0,5 meter.

    Identifieringsavståndet för storlek ökar linjärt, men beror också på vilken QR-version eller modulstorlek som stöds. Ju högre version, desto mindre moduler, som bara kan identifieras från en närmare position. Du kan också prova mikro-QR-koder om du vill att identifieringsavståndet ska vara längre. QR-identifiering fungerar med ett antal vinklar += 45 grader för att säkerställa att vi har rätt lösning för att identifiera koden.

    Andra identifieringsöverväganden:

    • QR-koder på böjda ytor stöds inte.
    • Orientering på plan stöds. Ut ur planet ska vara <= +-45 ser rakt på för att få bättre identifiering.
    • QR-kodens fysiska storlek bör ha moduler på minst 2/3 bildpunkter. Obs! Högre versioner av QR-koder har mindre moduler.

    För kompromissrelationen mellan avståndet och storleken på QR-koden för optimal identifiering, se följande diagram:

    QR code size distance chart

    Viktigt

    Se alltid till att du har tillräckligt med kontrast och en korrekt kantlinje.

    Hantera QR-koddata

    Windows Mixed Reality enheter identifierar QR-koder på systemnivå i drivrutinen. När enheten startas om eller drivrutinen startas om rensas historiken för identifierade QR-koder. QR-koder som har ritats om behandlas som nya objekt.

    Vi rekommenderar att du konfigurerar appen så att den ignorerar QR-koder som är äldre än en specifik tidsstämpel, som kan anges i appen. QR Code-API:et anger den tidpunkt då den senaste identifieringen inträffade. De flesta apputvecklare använder systemtiden när appen startas för att fastställa när en QR-kod identifieras.

    QR-koddata är inte appspecifika. När appen startas kommer det att finnas en lista över tillgängliga QR-koder som tillhandahålls. Apputvecklaren avgör vilka QR-koder som är relevanta för den här appen.

    QR-kodplacering i ett blanksteg

    Rekommendationer om var och hur du placerar QR-koder finns i Miljööverväganden för HoloLens.

    Felsöka och Vanliga frågor och svar

    Vilka funktioner behövs?

    Du behöver den webbkamerafunktion som har lagts till i manifestet (kryssrutan i Unity-funktioner). Om du skapar som ett UWP-standardprojekt finns det också i package.appxmanifest lösningsprojektet.

    Begär åtkomst genom att anropa följande funktion:

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

    Åtkomststatusen ska vara (status == QRCodeWatcherAccessStatus::Allowed).

    Om åtkomst nekas returnerar funktionen åtkomst nekad när du startar QRTracking.

    Det här API:et bör anropas innan du skapar objektet QRCodeWatcher .

    Om du kör projektet från Unity måste du också se till att du anropar från användargränssnittstråden. Annars returnerar API:et alltid nekad. Mer information finns i Klassen AppCallbacks i Unity Manual.

    Mer information om hur du konfigurerar projektet för Unity finns i konfigurera Unity för Windows Mixed Reality.

    Hur gör jag för att att funktionen för QR-kodspårning fungerar på HoloLens 2 enheter?

    QR-spårning sker automatiskt på HoloLens 2 och du behöver funktionen "webbkamera" som läggs till i din app.

    Var hittar jag API-plugin-filerna?

    Alla nödvändiga filer och dokumentation finns här.

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

    Hur gör jag för att förbereda en UWP för att använda Microsoft.MixedReality.QR.QRCodeWatcher?

    • Använd NuGet-paketet för att packa upp de filer som krävs.

    • Lägg till Microsoft.MixedReality.QR.winmd en referens i projektet och börja använda API:et.

    • Lägg till rätt arkitekturversioner av plugin-program och använd dem därefter i versionen.

    Hur gör jag för att förbereda Unity med Microsoft.MixedReality.QR.QRCodeWatcher?

    Använd NuGet för Unity och peka på NuGet-paketet ovan.

    Hur gör jag QR-koder?

    Kolla in valfri QR-kodgenerator – här är ett exempel.

    Vad gör jag om QR-kodspårning inte fungerar i allmänhet?

    • Är QR Code-versionen en version som stöds? Vi stöder inte högdensitetsversioner som version 40. Inget ovan version 10 är garanterat; versioner ovan 20 stöds inte.
    • Är du tillräckligt nära QR-koden? Se avstånd och vinkelposition från QR-koden.
    • Hur är belysningen? Det finns ett känt problem där det blir svårt att identifiera när QR-koden är i en mörk miljöbakgrund – QR-koden visas tvättad till kameran på grund av hög kontrast. Mer information finns i belysning och bakgrund.

    Vad är noggrannheten?

    När det identifieras i en enda bildruta förväntas storleken ha högst 1 % fel från den faktiska storleken. En kod på 10 cm kan till exempel vara upp till +/- 1 mm av i uppmätt storlek. Under kontinuerlig identifiering kan en kods position glida runt med upp till +/- 2,5 mm. När du har flyttat ut från identifieringsintervallet är en tidigare identifierings position upp till kartfelets nåd.

    Hur nära måste jag vara QR-koden för att identifiera den?

    Avståndet beror uppenbarligen på storleken på QR-koden och vilken version den är. Mer information finns i avstånd och vinkelposition från QR-koden.

    • På HoloLens 2, för en QR-version 1-kod som varierar från 5 cm sidor till 25 cm sidor, varierar det minsta avkänningsavståndet från 0,25 meter till 0,5 meter. De längsta dessa kan identifieras från går från ca 0,5 m för den minsta koden till två meter för den större.
    • På Windows Mixed Reality halveras dessa avstånd för storlekarna.
    • För eventuella koder som är större, extrapolera – ökar detekteringsavståndet för storlek linjärt. För alla kod som är mindre sker identifieringen helt enkelt inte – 4–5 cm är den minsta vi kan identifiera.

    Varför kan jag inte läsa QR-koder med logotyper?

    För närvarande stöder vi inte QR-koder med logotyper.

    QR-koderna identifieras, så varför får jag inga data?

    • Om plattformen inte kan avkoda QR-koden finns det inga data. Du kan använda strömmen och tolka data med hjälp av öppen källkod.
    • Vissa funktioner, till exempel strukturbilägg, stöds inte.

    Mer information finns i vilka QR-kodversioner stöds?.

    Sparas QR-koder på utrymmesnivå eller appnivå?

    QR-koder sparas på systemnivå i drivrutinssession eller startsession på HoloLens. Mer information finns i hantera QR-koddata.

    Hur fungerar det med den underliggande plattformen? Var finns de kvar?

    Identifierade QR-koder sparas i minnet av drivrutinen.

    Hur gör jag för att felsöka appen i Visual Studio när jag får felmeddelandet "Microsoft.MixedReality.QR.pdbhittades inte"?

    Symbolinläsning för Microsoft.MixedReality.QR.dll hoppades över eftersom den inte anges i listan med inkluderade moduler.

    Så här återskapar du

    Följ stegen för att återskapa det här beteendet:

    1. Installera Microsoft.MixedReality.QR (NuGet) och MRTK
    2. Prova att felsöka

    Du bör kunna felsöka appen med Microsoft.MixedReality.QR.dll, men DLL-filen finns inte:

    Microsoft.MixedReality.QR.pdb not found error message

    Vi arbetar med att lägga till symboler i nästa version. Under tiden bör du fortfarande kunna felsöka din app genom att exkludera DLL:en i Visual Studio alternativ:

    excluding the DLL in Visual Studio options

    Mer information finns i Konfigurera Visual Studio inställningar.

    Se även