Ö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 om:

Stöd för enheter

Funktion HoloLens 1:a gen 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:

    Avståndsdiagram för QR-kodstorlek

    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 finns en lista över tillgängliga QR-koder. 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 lägga till webbkamerafunktionen 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 ditt projekt för Unity finns i Konfigurera Unity för Windows Mixed Reality.

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

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

    Var hittar jag API-plugin-filerna?

    Alla nödvändiga filer och all 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 en referens i Microsoft.MixedReality.QR.winmd 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 över version 10 garanteras; versioner över 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 finns i en mörk miljöbakgrund – QR-koden visas som utspolad 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 som mest ha ett fel på 1 % från den faktiska storleken. Till exempel kan en kod på 10 cm 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 detekteringsintervallet ä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 naturligtvis 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-kod av version 1 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 upptäckas från går från cirka 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 alla koder som är större, extrapolera – detekteringsavståndet för storlek ökar linjärt. För all kod som är mindre sker det helt enkelt inte – 4–5 cm är det 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 drivrutinssessionen eller startsessionen 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äsningen för Microsoft.MixedReality.QR.dll hoppades över eftersom den inte anges i listan över 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:

    Felmeddelandet Microsoft.MixedReality.QR.pdb hittades inte

    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-filen i Visual Studio-alternativen:

    exkluderande DLL i Visual Studio-alternativ

    Mer information finns i Konfigurera Visual Studio-inställningar.

    Finns det en gräns för hur många QR-koder som kan genomsökas i en session?

    Det finns en gräns på 100 QR-koder som sparas på systemnivå i drivrutinen inom 10 minuter.

    Har QR-kodutjämningsprocessen ändrats?

    QR-kodutjämningsprocessen har ändrats efter 20H2, från poseutjämning till storleksutjämning. Om du vill återställa beteendet till föregående utjämningsprocess använder man en utjämningsalgoritm om nya QR-kodpositionsdata identifieras inom 5 sekunder eller 10 cm från den tidigare identifierade ramen. Transformeringsdata blandas via ett viktat förhållande på 90 % av den aktuella ramen med 10 % av föregående bildruta.

    Se även