Omówienie śledzenia kodu QR

Aby uzyskać dostęp do repozytorium GitHub dla przykładowego kodu QR:

Dzięki HoloLens 2 i immersywnym zestawom słuchawkowym można wykrywać kody QR w środowisku wokół zestawu słuchawkowego, ustanawiając układ współrzędnych w rzeczywistej lokalizacji każdego kodu. Możesz również renderować hologramy w tej samej lokalizacji na wielu urządzeniach, aby utworzyć środowisko udostępnione. Po włączeniu kamery internetowej urządzenia rozpoznasz kody QR w najnowszych wersjach projektów. Aby uzyskać najlepsze wyniki w środowisku produkcyjnym, zalecamy zapoznanie się z sekcją najlepszych rozwiązań .

Ten artykuł obejmuje następujące zagadnienia:

Obsługa urządzeń

Cecha HoloLens 1. generacji HoloLens 2 Immersyjne zestawy słuchawkowe
Wykrywanie kodu QR ✔️ ✔️

Uwaga

Śledzenie kodu QR z immersywnymi zestawami słuchawkowymi Windows Mixed Reality na komputerach stacjonarnych jest obsługiwane w Windows 10 wersji 2004 i nowszej. Użyj interfejsu Microsoft.MixedReality.QRCodeWatcher.IsSupported() API, aby określić, czy funkcja jest obsługiwana na bieżącym urządzeniu.

Obsługiwane wersje kodu QR

W poniższej tabeli wymieniono obsługiwane i nieobsługiwane wersje kodu QR:

  Wersje kodu QR
Obsługiwane:
  • Qr w wersji 1 – 10
  • Mikro kody QR M1-M4
  • Wszystkie kodowanie
Nieobsługiwane:
  • Kody QR 10–20 (mogą one działać, ale nie są gwarantowane)
  • Kody QR 20+
  • Ulepszone moduły, na przykład: moduły cykliczne, odbicia, odwrócone (czarny/biały).
  • Logo
  • Dołączania ze strukturą

    Najlepsze rozwiązania dotyczące wykrywania kodu QR

    Ciche strefy wokół kodów QR

    Aby można było poprawnie odczytać, kody QR wymagają marginesu wokół wszystkich stron kodu. Ten margines nie może zawierać żadnej drukowanej zawartości i powinien zawierać cztery moduły (pojedynczy czarny kwadrat w kodzie).

    Specyfikacja QR zawiera więcej informacji o strefach cichych.

    Oświetlenie i tło

    Jakość wykrywania kodu QR jest podatna na różne oświetlenie i tło.

    • W normalnych warunkach oświetlenia zapewnij wystarczający kontrast dla czarnych/białych modułów, aby uzyskać lepszą wydajność.

    • W ekstremalnych warunkach oświetlenia z jasnym oświetleniem lub ciemnym tle można spróbować zmniejszyć i dostosować kontrast, który może poprawić częstotliwość wykrywania kodu QR. Białe tło w kodzie QR można zmniejszyć z 255 w dół.

    Rozmiar kodów QR

    Windows Mixed Reality urządzenia nie działają z kodami QR z bokami mniejszymi niż 5 cm.

    W przypadku kodów QR z bokami od 5 cm do 10 cm urządzenie musi być dość blisko wykrywania kodu. Wykrywanie kodu może potrwać dłużej.

    Dokładny czas wykrywania kodów zależy nie tylko od rozmiaru kodów QR, ale także od tego, jak daleko jesteś od kodu. Przejście bliżej kodu pomoże w rozwiązaniu problemów z przesunięciem rozmiaru.

    Odległość i położenie kątowe z kodu QR

    Kamery śledzące mogą wykrywać tylko określony poziom szczegółowości. W przypadku małych kodów (mniej niż 10 cm wzdłuż boków) musisz być dość blisko. W przypadku kodu QR w wersji 1 o rozmiarze od 10 cm do 25 cm minimalna odległość wykrywania wynosi od 0,15 metra do 0,5 metra.

    Odległość wykrywania rozmiaru zwiększa się liniowo, ale zależy również od obsługiwanej wersji QR lub rozmiaru modułu. Im wyższa wersja, tym mniejsze moduły, które można wykryć tylko z bliższej pozycji. Możesz również wypróbować kody mikro-QR, jeśli chcesz, aby odległość wykrywania mogła być dłuższa. Wykrywanie QR działa z zakresem kątów += 45 stopni, aby upewnić się, że mamy odpowiednie rozwiązanie do wykrywania kodu.

    Inne zagadnienia dotyczące wykrywania:

    • Kody QR na zakrzywionych powierzchniach nie są obsługiwane.
    • Orientacja w płaszczyźnie jest obsługiwana. Poza płaszczyzną powinien być <= +-45 patrząc prosto, aby lepiej wykryć.
    • Fizyczny rozmiar kodu QR powinien mieć moduły o rozmiarze co najmniej 2/3 pikseli. Uwaga: Wyższe wersje kodów QR będą miały mniejsze moduły.

    Aby uzyskać relację kompromisu między odległością a rozmiarem kodu QR w celu optymalnego wykrywania, zobacz następujący wykres:

    Wykres odległości rozmiaru kodu QR

    Ważne

    Zawsze upewnij się, że masz wystarczający kontrast i odpowiednie obramowanie.

    Zarządzanie danymi kodu QR

    Windows Mixed Reality urządzenia wykrywają kody QR na poziomie systemu w sterowniku. Po ponownym uruchomieniu urządzenia lub ponownym uruchomieniu sterownika wykryta historia kodów QR zostanie wyczyszczone. Kody QR ponownie wykrywane są jako nowe obiekty.

    Zalecamy skonfigurowanie aplikacji w celu zignorowania kodów QR starszych niż określony znacznik czasu, który można określić w aplikacji. Interfejs API kodu QR określa czas ostatniego wykrycia. Większość deweloperów aplikacji będzie używać czasu systemowego, gdy aplikacja jest uruchamiana w celu określenia czasu wykrycia kodu QR.

    Dane kodu QR nie są specyficzne dla aplikacji. Po uruchomieniu aplikacji będzie dostępna lista dostępnych kodów QR. Deweloper aplikacji określi, które kody QR są istotne dla tej aplikacji.

    Umieszczanie kodu QR w przestrzeni

    Aby uzyskać zalecenia dotyczące miejsca i sposobu umieszczania kodów QR, zapoznaj się z tematem Zagadnienia dotyczące środowiska dla urządzenia HoloLens.

    Rozwiązywanie problemów i często zadawane pytania

    Jakie możliwości są potrzebne?

    Będziesz potrzebować możliwości kamery internetowej dodanej do manifestu (pole wyboru w obszarze Możliwości aparatu Unity). Jeśli tworzysz jako standardowy projekt platformy UWP, znajduje się on również w package.appxmanifest projekcie rozwiązania.

    Zażądaj dostępu, wywołując następującą funkcję:

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

    Stan dostępu powinien mieć wartość (status == QRCodeWatcherAccessStatus::Allowed).

    Jeśli dostęp zostanie odrzucony, funkcja zwróci odmowę dostępu po uruchomieniu .QRTracking

    Ten interfejs API powinien być wywoływany przed utworzeniem QRCodeWatcher obiektu.

    Jeśli uruchamiasz projekt z poziomu aparatu Unity, musisz również upewnić się, że wywołujesz wywołanie z wątku interfejsu użytkownika. W przeciwnym razie interfejs API zawsze zwróci odmowę. Aby uzyskać więcej informacji, zobacz AppCallbacks, klasa w podręczniku aparatu Unity.

    Aby uzyskać więcej informacji na temat konfigurowania projektu dla aparatu Unity, zobacz konfigurowanie aparatu Unity dla Windows Mixed Reality.

    Jak mogę sprawić, że funkcja śledzenia kodu QR działa na urządzeniach HoloLens 2?

    Śledzenie QR jest automatyczne na HoloLens 2 i będziesz potrzebować możliwości "kamery internetowej" dodanej do aplikacji.

    Gdzie mogę znaleźć pliki wtyczki interfejsu API?

    Wszystkie wymagane pliki i dokumentacja można znaleźć tutaj.

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

    Jak mogę przygotować platformę UWP do korzystania z aplikacji Microsoft.MixedReality.QR.QRCodeWatcher?

    • Użyj pakietu NuGet, aby rozpakować wymagane pliki.

    • Dodaj odwołanie do elementu Microsoft.MixedReality.QR.winmd w projekcie i zacznij korzystać z interfejsu API.

    • Dodaj prawidłowe wersje architektury wtyczek i użyj ich odpowiednio w kompilacji.

    Jak mogę przygotować aparat Unity za pomocą aplikacji Microsoft.MixedReality.QR.QRCodeWatcher?

    Użyj narzędzia NuGet dla aparatu Unity i wskaż powyższy pakiet NuGet.

    Jak mogę tworzyć kody QR?

    Zapoznaj się z dowolnym generatorem kodu QR — oto przykład.

    Jeśli śledzenie kodu QR nie działa ogólnie, co zrobić?

    • Czy wersja kodu QR jest obsługiwaną wersją? Nie obsługujemy wersji o wysokiej gęstości, takich jak wersja 40. Nic powyżej wersji 10 nie jest gwarantowane; wersje powyżej 20 nie są obsługiwane.
    • Czy jesteś wystarczająco blisko kodu QR? Zobacz odległość i położenie kątowe z kodu QR.
    • Jak jest oświetlenie? Istnieje znany problem polegający na tym, że wykrywanie staje się trudne, gdy kod QR znajduje się na ciemnym tle środowiska — kod QR pojawi się wymyty do aparatu z powodu dużego kontrastu. Aby uzyskać więcej informacji, zobacz oświetlenie i tło.

    Jaka jest dokładność?

    Po wykryciu w jednej ramce rozmiar powinien mieć co najwyżej 1% błędu z rzeczywistego rozmiaru. Na przykład kod o rozmiarze 10 cm może wynosić maksymalnie +/- 1 mm. W przypadku ciągłego wykrywania pozycja kodu może dryfować do +/- 2,5 mm. Po przeniesieniu z zakresu wykrywania pozycja poprzedniego wykrywania jest aż do łasek błędu mapy.

    Jak blisko powinienem być kod QR, aby go wykryć?

    Odległość zależy oczywiście od rozmiaru kodu QR, a także od jego wersji. Aby uzyskać więcej informacji, zobacz odległość i położenie kątowe z kodu QR.

    • Na HoloLens 2, dla wersji 1 kod QR różni się od 5 cm boków do 25 cm, minimalna odległość wykrywania waha się od 0,25 metrów do 0,5 metra. Najdalej można je wykryć z około 0,5 m dla najmniejszego kodu do dwóch metrów dla większego.
    • Na Windows Mixed Reality te odległości dla rozmiarów są o połowę mniejsze.
    • W przypadku większych kodów ekstrapolat - odległość wykrywania rozmiaru zwiększa się liniowo. W przypadku mniejszego kodu wykrywanie po prostu nie nastąpi --4-5 cm jest najmniejszym, jaki możemy wykryć.

    Dlaczego nie mogę odczytać kodów QR z logo?

    Obecnie nie obsługujemy kodów QR z logo.

    Wykryto kody QR, więc dlaczego nie otrzymuję żadnych danych?

    • Jeśli platforma nie może zdekodować kodu QR, nie będzie żadnych danych. Możesz użyć strumienia i interpretować dane przy użyciu kodu open source.
    • Niektóre funkcje, takie jak dołączanie struktury, nie są obsługiwane.

    Aby uzyskać więcej informacji, zobacz jakie wersje kodu QR są obsługiwane?

    Czy kody QR są zapisywane na poziomie "spacji" lub aplikacji?

    Kody QR są zapisywane na poziomie systemu w sesji sterownika lub w sesji rozruchu na urządzeniu HoloLens. Aby uzyskać więcej informacji, zobacz zarządzanie danymi kodu QR.

    Jak to działa z podstawową platformą? Gdzie się utrzymują?

    Wykryte kody QR są utrwalane w pamięci przez sterownik.

    Jak mogę debugować aplikację w programie Visual Studio po wyświetleniu komunikatu o błędzie "Microsoft.MixedReality.QR.pdbNie znaleziono"?

    Ładowanie symboli dla Microsoft.MixedReality.QR.dll elementu zostało pominięte, ponieważ nie jest określone na liście dołączonych modułów.

    Aby odtworzyć

    Wykonaj kroki, aby odtworzyć to zachowanie:

    1. Instalowanie obiektów Microsoft.MixedReality.QR (NuGet) i MRTK
    2. Spróbuj debugować

    Powinno być możliwe debugowanie aplikacji przy użyciu Microsoft.MixedReality.QR.dll, ale nie można odnaleźć biblioteki DLL:

    Nie znaleziono komunikatu o błędzie Microsoft.MixedReality.QR.pdb

    Pracujemy nad dodaniem symboli do następnej wersji. W międzyczasie nadal powinno być możliwe debugowanie aplikacji przez wykluczenie biblioteki DLL w opcjach programu Visual Studio:

    wykluczanie biblioteki DLL w opcjach programu Visual Studio

    Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień programu Visual Studio.

    Czy istnieje limit liczby kodów QR, które można skanować w sesji?

    Istnieje limit 100 kodów QR zapisanych na poziomie systemu w sterowniku w ciągu 10 minut.

    Czy proces wygładzania kodu QR został zmieniony?

    Proces wygładzania kodu QR został zmieniony po 20H2, od wygładzania po wygładzanie rozmiaru. Aby przywrócić zachowanie do poprzedniego procesu wygładzania, należy zastosować algorytm wygładzania, jeśli nowy kod QR pozuje dane są wykrywane w ciągu 5 sekund lub 10 cm od wcześniej wykrytej ramki. Dane przekształcenia są łączone za pomocą ważonego współczynnika 90% bieżącej ramki z 10% poprzedniej ramki.

    Zobacz też