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ługiwane urządzenia do śledzenia kodu QR
- Obsługiwane wersje kodu QR
- Najlepsze rozwiązania dotyczące wykrywania kodu QR
- Rozwiązywanie problemów i często zadawane pytania
- Jakie możliwości są potrzebne?
- Jak mogę sprawić, że funkcja śledzenia kodu QR działa na urządzeniach HoloLens 2?
- Gdzie mogę znaleźć pliki wtyczki interfejsu API?
- Jak mogę przygotować platformę UWP do korzystania z microsoft.MixedReality.QR.QRCodeWatcher?
- Jak mogę przygotować aparat Unity z aplikacją Microsoft.MixedReality.QR.QRCodeWatcher?
- Jak mogę tworzyć kody QR?
- Jeśli śledzenie kodu QR nie działa ogólnie, co zrobić?
- Jaka jest dokładność?
- Jak blisko muszę mieć kod QR, aby go wykryć?
- Dlaczego nie mogę odczytać kodów QR z logo?
- Kody QR są wykrywane, więc dlaczego nie otrzymuję żadnych danych?
- Czy kody QR są zapisywane na poziomie "spacji" lub aplikacji?
- Jak to działa z podstawową platformą? Gdzie się utrzymują?
- Jak mogę debugować aplikację w programie Visual Studio po otrzymaniu komunikatu o błędzie "
Microsoft.MixedReality.QR.pdb
Nie znaleziono"?
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: |
|
Nieobsługiwane: |
|
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:
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.pdb
Nie 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:
- Instalowanie obiektów Microsoft.MixedReality.QR (NuGet) i MRTK
- Spróbuj debugować
Powinno być możliwe debugowanie aplikacji przy użyciu Microsoft.MixedReality.QR.dll, ale nie można odnaleźć biblioteki DLL:
Zalecane rozwiązanie
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:
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.