QR-kódkövetés áttekintése
A QR-kódmintához tartozó GitHub-adattár elérése:
A Windows Mixed Reality és a HoloLens headsetek segítségével az alkalmazás képes észlelni a QR-kódokat a headset körüli környezetben, és koordinátarendszert hoz létre az egyes kódok valós helyén. A hologramokat ugyanazon a helyen több eszközön is megjelenítheti a megosztott felület létrehozásához. Miután engedélyezte az eszköz webkameráját, felismeri a QR-kódokat a projektek legújabb verzióiban. Az éles környezetben elért legjobb eredmények érdekében javasoljuk, hogy tekintse át az ajánlott eljárásokat ismertető szakaszt .
Ebben a cikkben a következőkkel ismerkedhet meg:
- A QR-kódkövetés támogatott eszközei
- Támogatott QR-kódverziók
- Ajánlott eljárások a QR-kódészleléshez
- Hibaelhárítás és gyakori kérdések
- Milyen képességekre van szükség?
- Hogyan a QR-kódkövetési funkció működését HoloLens 2-eszközökön?
- Hol találhatók az API beépülő modul fájljai?
- Hogyan előkészíteni egy Unity-alkalmazást az ARMarkerManager qR-kódok észlelésére?
- Hogyan előkészíteni egy nem Unity-alkalmazást, hogy az OpenXR használatával észlelje a QR-kódokat?
- Hogyan előkészíteni egy UWP-t a Microsoft.MixedReality.QR.QRCodeWatcher használatára?
- Hogyan előkészíteni a Unityt a Microsoft.MixedReality.QR.QRCodeWatcherrel?
- Hogyan készíthetek QR-kódokat?
- Ha a QR-kódkövetés általában nem működik, mit tegyek?
- Mi a pontosság?
- Milyen közel kell lennem a QR-kódhoz az észleléséhez?
- Miért nem tudok QR-kódokat olvasni emblémákkal?
- A QR-kódok észlelhetők, miért nem kapok adatokat?
- A QR-kódok a "szóköz" vagy az alkalmazás szintjén vannak mentve?
- Hogyan működik ez a mögöttes platformmal? Hol maradnak?
- Hogyan hibakeresést a Visual Studióban, amikor a "
Microsoft.MixedReality.QR.pdb
nem található" hibaüzenet jelenik meg?
Eszköztámogatás
Termék | HoloLens 1. gen | HoloLens 2 | Modern fejhallgatók |
---|---|---|---|
OpenXR | ✔️ (Az OpenXR Runtime 113-es verziójával és az OpenXR XR_MSFT_scene_marker kiterjesztéssel) | ||
Mixed Reality Unity beépülő modul | ✔️ (Az OpenXR Runtime 113-es verziójával és a Mixed Reality Unity beépülő modullal ARMarkerManager ) |
||
Örökölt QR SDK | ✔️ | ✔️ | ✔️ |
Feljegyzés
Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.
Az örökölt QR-kód SDK használatával a QR-kódkövetés modern Windows Mixed Reality headsetekkel asztali számítógépeken a Windows 10 2004-es és újabb verzióiban támogatott. Microsoft.MixedReality.QRCodeWatcher.IsSupported()
Az API használatával állapítsa meg, hogy a funkció támogatott-e az aktuális eszközön.
Támogatott QR-kódverziók
Az alábbi táblázat a QR-kód támogatott és nem támogatott verzióit sorolja fel:
QR-kódverziók | |
---|---|
Támogatott: |
|
Nem támogatott: |
|
Ajánlott eljárások a QR-kódészleléshez
Csendes zónák a QR-kódok körül
A helyes olvasáshoz a QR-kódokhoz a kód minden oldala körül margó szükséges. Ez a margó nem tartalmazhat nyomtatott tartalmat, és négy modulból (a kód egyetlen fekete négyzete) szélesnek kell lennie.
A QR-kód hivatalos dokumentációja további információkat tartalmaz a csendes zónákról.
Világítás és háttérrendszer
A QR-kódészlelés minősége érzékeny a különböző megvilágításra és háttérrendszerre.
Normál megvilágítási körülmények között biztosítson elegendő kontrasztot a fekete-fehér modulokhoz a jobb teljesítmény érdekében.
Szélsőséges, világos megvilágítással vagy sötét háttérrendszerrel rendelkező megvilágítás esetén megpróbálhatja csökkenteni és beállítani a kontrasztot, ami javíthatja a QR-kódok észlelésének sebességét. A QR-kód fehér háttere 255-ről lefelé csökkenthető.
QR-kódok mérete
A Windows Mixed Reality és a HoloLens rendszerű eszközök nem működnek 5 cm-nél kisebb oldalú QR-kódokkal.
Az 5 cm és 10 cm közötti oldalakat tartalmazó QR-kódok esetében az eszköznek elég közel kell lennie a kód észleléséhez. A kód észlelése az átlagosnál hosszabb időt is igénybe vehet.
A kódok észlelésének pontos ideje nem csak a QR-kódok méretétől függ, hanem attól is, hogy milyen messze van a kódtól. Ha közelebb kerül a kódhoz, az segít eltűnni a méretproblémákat.
Távolság és szög pozíció a QR-kódtól
A nyomkövető kamerák csak bizonyos részletességi szintet képesek észlelni. Kis kódok esetén (az oldalak 10 cm-nél kisebb mentén) meglehetősen közel kell lennie. Az 1- es verziójú QR-kód 10 cm-től 25 cm-es méretig terjed, a minimális észlelési távolság 0,15 méter és 0,5 méter között van.
A méret észlelési távolsága lineárisan nő, de a QR támogatott verziójától vagy modulméretétől is függ. Minél magasabb a verzió, annál kisebbek a modulok, amelyek csak közelebbről észlelhetők. A mikro-QR-kódokat is kipróbálhatja, ha azt szeretné, hogy az észlelés távolsága hosszabb legyen. A QR-észlelés a += 45 deg szögtartományban működik, így biztosítjuk, hogy megfelelő felbontással rendelkezzünk a kód észleléséhez.
Egyéb észlelési szempontok:
- Az íves felületek QR-kódjai nem támogatottak.
- A síkon belüli tájolás támogatott. A jobb észlelés érdekében a síkon kívül = +-45 értéknek kell lennie <.
- A QR-kód fizikai méretének legalább 2/3 képpontos modulokkal kell rendelkeznie. Megjegyzés: A QR-kódok magasabb verzióinak kisebb moduljai lesznek.
A QR-kód távolsága és mérete közötti kompromisszumos kapcsolat az optimális észleléshez lásd a következő grafikont:

Fontos
Mindig győződjön meg arról, hogy elegendő kontraszttal és megfelelő szegélyrel rendelkezik.
QR-kódadatok kezelése
A Windows Mixed Reality és a HoloLens rendszerű eszközök rendszerszinten észlelik a QR-kódokat az illesztőprogramban. Amikor az eszköz újraindul vagy az illesztőprogram újraindul, az észlelt QR-kódok előzményei törlődnek. Az újra felfedezett QR-kódok új objektumokként lesznek kezelve.
Javasoljuk, hogy úgy konfigurálja az alkalmazást, hogy figyelmen kívül hagyja az adott időbélyegnél régebbi QR-kódokat, amelyek az alkalmazásban megadhatóak. A QR Code API megadja az utolsó észlelés időpontját. A legtöbb alkalmazásfejlesztő a rendszeridőt fogja használni az alkalmazás elindításakor a QR-kód észlelésének időpontjának meghatározásához.
A QR-kód adatai nem alkalmazásspecifikusak. Az alkalmazás indításakor megjelenik a rendelkezésre álló QR-kódok listája. Az alkalmazás fejlesztője határozza meg, hogy mely QR-kódok relevánsak ehhez az alkalmazáshoz.
QR-kód elhelyezése egy térben
A QR-kódok helyére és elhelyezésére vonatkozó javaslatokért tekintse meg a HoloLens környezeti szempontjait.
Hibaelhárítás és gyakori kérdések
Milyen képességekre van szükség?
Ha engedélyezni szeretné a QR-kódkövetést a HoloLens-alkalmazásban, adja hozzá a webkamera képességét az alkalmazás jegyzékfájljához. Ha a Unityben fejleszt, ezt a lejátszó beállításai alapján konfigurálhatja.
Emellett előfordulhat, hogy a felhasználókat az engedélyek párbeszédpanelje kéri az alkalmazás webkamera engedélyeinek megadásához. Ez csak egyszer történik egy alkalmazás élettartama alatt. Olyan esetekben, amikor az alkalmazás kifejezetten webkamera-hozzáférést kér, a párbeszédpanel nem jelenik meg újra.
A WebCam képességgel rendelkező Unity-alkalmazások esetében a jelenetben való ARMarkerManager
engedélyezés aktiválhatja a webkamera engedély párbeszédpaneljének megjelenítését.
Natív OpenXR C++ alkalmazások esetén az xrComputeNewSceneMSFT és a benne lévő XrNewSceneComputeInfoMSFT::requestedFeatures
XR_SCENE_COMPUTE_FEATURE_MARKER_MSFT
kezdeti hívások aktiválhatják az engedélyek párbeszédpanelt.
Feljegyzés
Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.
Hozzá kell adnia a webkamerás képességet a jegyzékhez (a Unity Capabilities jelölőnégyzetében). Ha standard UWP-projektként készül, az a megoldásprojekt package.appxmanifestjében is megtalálható.
Az örökölt QR-kód SDK-ban kérjen hozzáférést a következő metódus meghívásával:
#if WINDOWS_UWP
async QRCodeWatcher.RequestAccessAsync();
#endif
A hozzáférési állapotnak a következőnek kell lennie (status == QRCodeWatcherAccessStatus::Allowed)
: .
Ha a hozzáférés megtagadva van, akkor a szolgáltatás a hozzáférés megtagadva lesz a QRTracking
kezdéskor.
Ezt az API-t az objektum létrehozása QRCodeWatcher
előtt kell meghívni.
Ha a projektet a Unityből futtatja, arról is gondoskodnia kell, hogy a felhasználói felületi szálról hívjon. Ellenkező esetben az API mindig megtagadva jelenik meg. További információ: AppCallbacks osztály a Unity Kézikönyvben.
A unity-projekt beállításával kapcsolatos további információkért lásd a Unity konfigurálását a Windows Mixed Realityhez.
Hogyan a QR-kódkövetési funkció működését HoloLens 2-eszközökön?
A QR-nyomkövetés automatikus a HoloLens 2-ben, és hozzá kell adnia az alkalmazáshoz a "webkamera" funkciót.
Hol találhatók az API beépülő modul fájljai?
Az alkalmazásoknak a HoloLen OpenXR-futtatókörnyezetét kell használniuk a QR-kódok észleléséhez. Az OpenXR for Windows Mixed Reality (113.2403.5001 vagy újabb) QR-kódtámogatást biztosít HoloLens-eszközökön.
A Unity-alkalmazások esetében a QR-kód támogatása a ARMarkerManager
Mixed Reality OpenXR beépülő modullal biztosított összetevőn keresztül történik.
A nem Unity-alkalmazások QR-kódjának támogatásához használja az OpenXR XR_MSFT_scene_marker bővítményt.
Feljegyzés
Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.
Az összes szükséges fájlt és dokumentációt itt találja a NuGetben:
Hogyan előkészíteni egy Unity-alkalmazást az ARMarkerManager qR-kódok észlelésére?
A Unity-alkalmazásokban az összetevő a ARMarkerManager
QR-kódok fizikai környezetben való észlelésének egy jelenetben való ábrázolására szolgál. ARMarkerManager
Biztosít:
Események az előfizetők értesítésére, ha egy észlelt QR-kódot hozzáadtak a kezelőhöz, frissítve vagy eltávolítva.
Nyomon követhető kódgyűjtemény
ARMarker
az észlelés alatt álló QR-kódokhoz.A nyomon követhető azonosító által megadott QR-kódok adatait visszaadó metódusok.
ARMarkerManager
Az alkalmazás használatához importálnia kell a Mixed Reality OpenXR beépülő modulcsomagot.
A csomag importálása:
Az eszköz használatáról részletes útmutatást a Vegyes valóság funkció eszköz üdvözli.
A következő általános eljárás a következő:
- A Unity-projektben engedélyezze a WebCam képességeit.
- Hozzon létre egy előfabot, és csatolja az összetevőt az
ARMarker
alábbi módon:
- Nyisson meg egy jelenetet, amelyet futás közben QR-kódok észlelnek.
- Csatoljon
ARMarkerManager
egy GameObject-et a jelenetben, és állítsa be a Marker Prefab elemet a létrehozott előfabhoz.
Részletesebb utasításokért és információkért tekintse meg a Unity QR-kódjait.
A QR-kódok Unity-alkalmazásban való használatára vonatkozó példa a GitHubon található QR-kód mintaforgatókönyvében található.
Hogyan előkészíteni egy nem Unity-alkalmazást, hogy az OpenXR használatával észlelje a QR-kódokat?
A QR-kódészlelés az OpenXR-ben a XR_MSFT_scene_marker bővítményen keresztül történik. Ez a bővítmény lehetővé teszi több QR-kód nyomon követését, és képes méretet, pozíciót, utolsó észlelési időbélyeget, UUID-t és pufferelt QR-kódadatokat biztosítani az észlelt QR-kódokhoz.
A QR-kód támogatásának engedélyezéséhez engedélyezni kell a XR_MSFT_scene_marker és XR_MSFT_scene_understanding bővítményeket is.
Részletes részletes információkért tekintse meg a XR_MSFT_scene_marker bővítmény áttekintését az OpenXR 1.0 specifikációjában.
A QR-kódok használatára példa: Scene_QRCode.cpp a SceneUnderstandingUwp mintában a GitHubon.
Hogyan előkészíteni egy UWP-t a Microsoft.MixedReality.QR.QRCodeWatcher használatára?
Feljegyzés
Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.
A NuGet-csomaggal csomagolja ki a szükséges fájlokat.
Adjon hozzá egy hivatkozást a
Microsoft.MixedReality.QR.winmd
projekthez, és kezdje el használni az API-t.Adja hozzá a beépülő modulok megfelelő architektúraverzióit, és ennek megfelelően használja őket a buildben.
Hogyan előkészíteni a Unityt a Microsoft.MixedReality.QR.QRCodeWatcherrel?
Feljegyzés
Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.
Használja a NuGet for Unityt, és mutasson a fenti NuGet-csomagra.
Hogyan készíthetek QR-kódokat?
Tekintse meg a QR-kódgenerátorokat.
Ha a QR-kódkövetés általában nem működik, mit tegyek?
A QR Code verziója támogatott verzió? Nem támogatjuk a nagy sűrűségű verziókat, például a 40-es verziót. A 10-es verziónál semmi sem garantált; A 20 feletti verziók nem támogatottak.
Elég közel van a QR-kódhoz? A QR-kód távolságának és szögének megjelenítése.
Milyen a világítás? Van egy ismert probléma, amely miatt az észlelés nehézkessé válik, ha a QR-kód sötét környezeti háttérrel rendelkezik – a QR-kód a nagy kontraszt miatt ki lesz mosva a kamerából. További információkért lásd a világítást és a háttérrendszert.
Mi a pontosság?
Ha egyetlen keretben észlelik, a méret várhatóan legfeljebb 1%-os hibát jelez a tényleges méretből. Egy 10 cm-es kód például akár +/- 1 mm-rel is ki lehet kapcsolva mért méretben. Folyamatos észlelés esetén a kód helyzete akár +/- 2,5 mm-rel is eltolódhat. Miután kilépett az észlelési tartományból, az előző észlelés pozíciója a leképezési hiba kegyének felel meg.
Milyen közel kell lennem a QR-kódhoz az észleléséhez?
A távolság nyilvánvalóan a QR-kód méretétől és annak verziójától függ. További információ: távolság és szög pozíció a QR-kódtól.
A HoloLens 2 esetében az 1- es verziójú QR-kód 5 cm-től 25 cm-es oldalig terjed, a minimális észlelési távolság 0,25 métertől 0,5 méterig terjed. Ezek a legtávolabbiak körülbelül 0,5 m-től a legkisebb kódtól két méterig észlelhetők a nagyobbak számára.
A Windows Mixed Realityben ezek a távolságok felére csökkennek a méretekhez.
Minden nagyobb kód esetén extrapoláljuk – a méret észlelési távolsága lineárisan nő. Bármilyen kisebb kód esetén az észlelés egyszerűen nem történik meg – a 4-5 cm a legkisebb, amit észlelni tudunk.
Miért nem tudok QR-kódokat olvasni emblémákkal?
Az emblémákkal ellátott QR-kódok nem támogatottak.
A QR-kódok észlelhetők, miért nem kapok adatokat?
Ha a platform nem tudja dekódolni a QR-kódot, nem lesznek adatok. A streamet használhatja, és nyílt forráskódú kóddal értelmezheti az adatokat.
Egyes funkciók, például a struktúra hozzáfűzése nem támogatottak.
További információ: milyen QR-kódverziók támogatottak?
A QR-kódok a "szóköz" vagy az alkalmazás szintjén vannak mentve?
A QR-kódok rendszerszinten vannak mentve az illesztőprogram-munkamenetben, vagy a Rendszerindítási munkamenet a HoloLensben. További információ: QR-kódadatok kezelése.
Hogyan működik ez a mögöttes platformmal? Hol maradnak?
Az észlelt QR-kódokat az illesztőprogram megőrzi a memóriában.
Hogyan hibakeresést a Visual Studióban, amikor a "Microsoft.MixedReality.QR.pdb
nem található" hibaüzenet jelenik meg?
Feljegyzés
Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.
A szimbólum betöltése Microsoft.MixedReality.QR.dll
kihagyva, mert nincs megadva a belefoglalt modulok listájában.
Reprodukálás
Feljegyzés
Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.
Kövesse az alábbi lépéseket a viselkedés reprodukálásához:
- A Microsoft.MixedReality.QR (NuGet) és az MRTK telepítése
- Hibakeresési kísérlet
Képesnek kell lennie az alkalmazás hibakeresésére Microsoft.MixedReality.QR.dll, de a DLL nem található:

Javasolt megoldás
Feljegyzés
Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.
Dolgozunk a szimbólumok hozzáadásán a következő kiadáshoz. Addig is képesnek kell lennie az alkalmazás hibakeresésére, ha kizárja a DLL-t a Visual Studio beállításai közül:

További információ: A Visual Studio beállításainak konfigurálása.
Van-e korlátja annak, hogy hány QR-kód vizsgálható be egy munkamenetben?
Az illesztőprogram rendszerszinten mentett QR-kódjai legfeljebb 100 perc alatt menthetők.
Módosult a QR-kód simítási folyamata?
A QR-kód simítási folyamata 20H2 után módosult, a póz simításától a méretsimításig. Az előző simítási folyamat viselkedésének visszaállításához egy simító algoritmust alkalmazunk, ha az új QR-kód a korábban észlelt keret 5 másodpercén vagy 10 cm-én belül észleli az adatokat. Az átalakító adatok az aktuális keret 90%-ának súlyozott arányával és az előző keret 10%-ával keverednek.