Přehled sledování kódů QR

Přístup k úložišti GitHub pro ukázku kódu QR:

Díky HoloLens 2 a imerzivním náhlavním soupravám můžete detekovat kódy QR v prostředí kolem náhlavní soupravy a vytvořit souřadnicový systém v reálném umístění každého kódu. Můžete také vykreslit hologramy na stejném místě na více zařízeních a vytvořit tak sdílené prostředí. Jakmile povolíte webkameru zařízení, rozpoznáte kódy QR v nejnovějších verzích vašich projektů. Pokud chcete dosáhnout nejlepších výsledků při přechodu do produkčního prostředí, doporučujeme projít si část s osvědčenými postupy .

V tomto článku najdete následující informace:

Podpora zařízení

Funkce HoloLens 1. generace HoloLens 2 Imerzivní náhlavní soupravy
Detekce kódu QR ✔️ ✔️

Poznámka

Sledování kódu QR s imerzivními náhlavními soupravami Windows Mixed Reality na stolních počítačích je podporováno ve verzi Windows 10 2004 a vyšší. Microsoft.MixedReality.QRCodeWatcher.IsSupported() Pomocí rozhraní API můžete určit, jestli je funkce podporovaná na aktuálním zařízení.

Podporované verze kódu QR

Následující tabulka uvádí podporované a nepodporované verze kódu QR:

  Verze kódu QR
Podporováno:
  • QR verze 1 až 10
  • Mikro QR kódy M1-M4
  • Všechna kódování
Nepodporuje se:
  • Kódy QR 10 až 20 (tyto kódy můžou fungovat, ale nejsou zaručené)
  • Kódy QR 20+
  • Vylepšené moduly, například: kruhové moduly, odrazy, invertované (černobílé).
  • Loga
  • Strukturovaná připojení

    Osvědčené postupy pro detekci kódu QR

    Tiché zóny kolem kódů QR

    Aby se kódy QR správně četly, vyžadují kolem všech stran kódu okraj. Tento okraj nesmí obsahovat žádný tištěný obsah a měl by mít šířku čtyř modulů (jeden černý čtvereček v kódu).

    Specifikace QR obsahuje další informace o tichých zónách.

    Osvětlení a pozadí

    Kvalita detekce kódu QR je náchylná k různým osvětlením a pozadí.

    • Za normálních světelných podmínek zajistěte dostatečný kontrast pro černobílé moduly pro lepší výkon.

    • V extrémních světelných podmínkách s jasným osvětlením nebo tmavým pozadím se můžete pokusit snížit a upravit kontrast, což by mohlo zlepšit rychlost detekce kódů QR. Bílé pozadí v kódu QR je možné zmenšit z 255 směrem dolů.

    Velikost kódů QR

    Windows Mixed Reality zařízení nefungují s kódy QR o stranách menších než 5 cm.

    U kódů QR se stranami od 5 cm do 10 cm musí být zařízení poměrně blízko, aby bylo možné kód rozpoznat. Zjištění kódu může trvat déle.

    Přesný čas detekce kódů závisí nejen na velikosti kódů QR, ale také na tom, jak daleko jste od kódu. Přechod blíž ke kódu pomůže vykompenzovat problémy s velikostí.

    Vzdálenost a úhlová pozice od kódu QR

    Sledovací kamery dokážou detekovat pouze určitou úroveň podrobností. Pro malé kódy (méně než 10 cm po stranách) musíte být poměrně blízko. Pro kód QR verze 1 o velikosti od 10 cm do 25 cm je minimální detekční vzdálenost mezi 0,15 a 0,5 metrů.

    Vzdálenost detekce velikosti se zvětšuje lineárně, ale závisí také na podporované verzi QR nebo velikosti modulu. Čím vyšší verze, tím menší moduly, které lze detekovat pouze z bližší pozice. Pokud chcete, aby byla vzdálenost detekce delší, můžete také vyzkoušet kódy micro-QR. Detekce QR funguje s rozsahem úhlů += 45 stupňů, abychom zajistili správné rozlišení pro detekci kódu.

    Další aspekty detekce:

    • Kódy QR na zakřivených površích nejsou podporovány.
    • Je podporována orientace v rovině. Mimo rovinu by mělo být <= +-45, aby bylo možné lépe detekovat.
    • Fyzická velikost kódu QR by měla mít moduly alespoň 2/3 pixelů. Poznámka: Vyšší verze kódů QR budou mít menší moduly.

    Vztah kompromisu mezi vzdáleností a velikostí kódu QR pro optimální detekci najdete v následujícím grafu:

    Graf vzdálenosti kódu QR

    Důležité

    Vždy se ujistěte, že máte dostatečný kontrast a správné ohraničení.

    Správa dat kódu QR

    Windows Mixed Reality zařízení detekují kódy QR na úrovni systému v ovladači. Po restartování zařízení nebo restartování ovladače se historie zjištěných kódů QR vymaže. Předefinované kódy QR se považují za nové objekty.

    Doporučujeme nakonfigurovat aplikaci tak, aby ignorovala kódy QR starší než určité časové razítko, které je možné v aplikaci zadat. Rozhraní API pro kód QR určuje čas, kdy došlo k poslednímu zjištění. Většina vývojářů aplikací použije systémový čas při spuštění aplikace k určení času zjištění kódu QR.

    Data kódu QR nejsou specifická pro aplikaci. Po spuštění aplikace bude k dispozici seznam dostupných kódů QR. Vývojář aplikace určí, které kódy QR jsou pro tuto aplikaci relevantní.

    Umístění kódu QR v prostoru

    Doporučení k umístění a způsobu umísťování kódů QR najdete v tématu Aspekty prostředí pro HoloLens.

    Řešení potíží a nejčastější dotazy

    Jaké funkce jsou potřeba?

    Do manifestu budete potřebovat přidat funkci webkamery (zaškrtávací políčko v Unity Capabilities). Pokud vytváříte jako standardní projekt UPW, je také součástí package.appxmanifest projektu řešení.

    Požádejte o přístup voláním následující funkce:

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

    Stav přístupu by měl být (status == QRCodeWatcherAccessStatus::Allowed).

    Pokud je přístup odepřen, vrátí funkce při spuštění QRTrackingfunkce odepření přístupu.

    Toto rozhraní API by se mělo volat před vytvořením objektu QRCodeWatcher .

    Pokud projekt spouštíte z Unity, musíte se také ujistit, že voláte z vlákna uživatelského rozhraní. V opačném případě rozhraní API vždy vrátí hodnotu Odepřeno. Další informace najdete v tématu AppCallbacks třída v příručce Unity.

    Další informace o nastavení projektu pro Unity najdete v tématu Konfigurace Unity pro Windows Mixed Reality.

    Návody, aby funkce sledování kódu QR fungovala na HoloLens 2 zařízeních?

    Sledování kódů QR je na HoloLens 2 automatické a budete potřebovat do aplikace přidat funkci "webkamery".

    Kde najdu soubory modulu plug-in rozhraní API?

    Všechny požadované soubory a dokumentaci najdete tady.

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

    Návody připravit UPW na použití Microsoft.MixedReality.QR.QRCodeWatcher?

    • Pomocí balíčku NuGet rozbalte požadované soubory.

    • Přidejte do projektu odkaz na Microsoft.MixedReality.QR.winmd a začněte používat rozhraní API.

    • Přidejte správné verze architektury modulů plug-in a použijte je odpovídajícím způsobem v sestavení.

    Návody připravit Unity pomocí microsoft.MixedReality.QR.QRCodeWatcher?

    Použijte NuGet pro Unity a přejděte na balíček NuGet uvedený výše.

    Jak můžu vytvořit kódy QR?

    Podívejte se na generátor kódů QR – tady je jeden příklad.

    Pokud sledování kódů QR obecně nefunguje, co mám dělat?

    • Je verze kódu QR podporovaná? Nepodporujeme verze s vysokou hustotou, jako je verze 40. Nic výše než verze 10 není zaručeno; verze vyšší než 20 se nepodporují.
    • Jste dost blízko kódu QR? Podívejte se na vzdálenost a úhlovou polohu od kódu QR.
    • Jak je to s osvětlením? Existuje známý problém, kdy se detekce ztěžuje, když je kód QR na tmavém pozadí prostředí – kód QR se z fotoaparátu vymyje kvůli vysokému kontrastu. Další informace najdete v tématu Osvětlení a pozadí.

    Jaká je přesnost?

    Při zjištění v jednom snímku se očekává, že velikost bude obsahovat maximálně 1% chybu oproti skutečné velikosti. Například kód 10 cm může být ve změřené velikosti až +/- 1 mm. Při nepřetržité detekci se může pozice kódu posunovat až o +/- 2,5 mm. Jakmile se přesunete mimo rozsah detekce, bude pozice předchozí detekce až na chybu mapy.

    Jak blízko musí být kód QR, abych ho zjistil?

    Vzdálenost samozřejmě závisí na velikosti KÓDU QR a také na tom, o jakou verzi se jedná. Další informace najdete v tématu vzdálenost a úhlová poloha od kódu QR.

    • Na HoloLens 2 se minimální detekční vzdálenost pohybuje od 0,25 do 0,5 metrů od 0,25 do 0,5 cm. Nejdále od nich lze zjistit od přibližně 0,5 m pro nejmenší kód až po dva metry pro větší.
    • Na Windows Mixed Reality jsou tyto vzdálenosti velikostí poloviční.
    • U všech větších kódů extrapolujte – vzdálenost detekce velikosti se lineárně zvětšuje. U jakéhokoli menšího kódu detekce jednoduše nedojde – 4-5 cm je nejmenší, co můžeme zjistit.

    Proč nemůžu číst kódy QR s logy?

    V současné době nepodporujeme kódy QR s logy.

    Kódy QR se detekují, proč tedy nedostávám žádná data?

    • Pokud platforma nemůže kód QR dekódovat, nebudou k dispozici žádná data. Můžete použít stream a interpretovat data pomocí opensourcového kódu.
    • Některé funkce, například připojení struktury, nejsou podporované.

    Další informace najdete v článku o podporovaných verzích kódů QR.

    Ukládají se kódy QR na úrovni prostoru nebo na úrovni aplikace?

    Kódy QR se ukládají na úrovni systému v relaci ovladače nebo spouštěcí relaci na HoloLensu. Další informace najdete v tématu správa dat kódů QR.

    Jak to funguje se základní platformou? Kde se uchovávají?

    Zjištěné kódy QR jsou uložené v paměti ovladačem.

    Návody ladit aplikaci v sadě Visual Studio, když se zobrazí chybová zpráva NenalezenaMicrosoft.MixedReality.QR.pdb?

    Načítání symbolu pro Microsoft.MixedReality.QR.dll bylo vynecháno, protože není zadáno v seznamu zahrnutých modulů.

    Reprodukování

    Postupujte podle pokynů k reprodukování tohoto chování:

    1. Instalace Microsoft.MixedReality.QR (NuGet) a MRTK
    2. Zkuste ladit

    Měli byste být schopni ladit aplikaci pomocí Microsoft.MixedReality.QR.dll, ale knihovna DLL se nenašla:

    Chybová zpráva Microsoft.MixedReality.QR.pdb se nenašla

    Pracujeme na přidání symbolů do příští verze. Mezitím byste měli být stále schopni ladit aplikaci vyloučením knihovny DLL v možnostech sady Visual Studio:

    vyloučení knihovny DLL v možnostech sady Visual Studio

    Další informace najdete v tématu Konfigurace nastavení sady Visual Studio.

    Existuje omezení počtu kódů QR, které je možné v relaci naskenovat?

    Na úrovni systému v ovladači je do 10 minut uloženo maximálně 100 kódů QR.

    Změnil se proces vyhlazování kódu QR?

    Proces vyhlazování kódu QR se po 20H2 změnil z vyhlazování pozice na vyhlazování velikosti. Pokud chcete vrátit chování k předchozímu procesu vyhlazování, použijeme algoritmus vyhlazování, pokud jsou data nového kódu QR pose zjištěna do 5 sekund nebo 10 cm od dříve zjištěného snímku. Data transformace se prolínají pomocí váženého poměru 90 % aktuálního rámce s 10 % předchozího snímku.

    Viz také