Panoramica del rilevamento del codice a matrice
Per accedere al repository GitHub per l'esempio di codice a matrice:
Con HoloLens 2 e visori VR immersive, è possibile rilevare i codici a matrice nell'ambiente intorno al visore VR, stabilendo un sistema di coordinate nella posizione reale di ogni codice. È anche possibile eseguire il rendering degli ologrammi nella stessa posizione in più dispositivi per creare un'esperienza condivisa. Dopo aver abilitato la webcam del dispositivo, si riconosceranno i codici a matrice nelle versioni più recenti dei progetti. Per ottenere risultati ottimali nell'ambiente di produzione, è consigliabile esaminare la sezione procedure consigliate .
Questo articolo contiene informazioni relative agli argomenti seguenti:
- Dispositivi supportati per il rilevamento del codice a matrice
- Versioni supportate del codice a matrice
- Procedure consigliate per il rilevamento del codice a matrice
- Risoluzione dei problemi e domande frequenti
- Quali funzionalità sono necessarie?
- Ricerca per categorie rendere funzionante la funzionalità di rilevamento del codice a matrice sui dispositivi HoloLens 2?
- Dove si trovano i file del plug-in dell'API?
- Ricerca per categorie preparare una piattaforma UWP per l'uso di Microsoft.MixedReality.QR.QRCodeWatcher?
- Ricerca per categorie preparare Unity con Microsoft.MixedReality.QR.QRCodeWatcher?
- Come è possibile creare codici a matrice?
- Se il rilevamento del codice a matrice non funziona in generale, cosa faccio?
- Qual è l'accuratezza?
- Quanto è necessario chiudere il codice a matrice per rilevarlo?
- Perché non è possibile leggere codici a matrice con logo?
- I codici a matrice vengono rilevati, quindi perché non si ricevono dati?
- I codici a matrice vengono salvati a livello di "spazio" o di app?
- Come funziona con la piattaforma sottostante? Dove vengono mantenuti?
- Ricerca per categorie eseguire il debug dell'app in Visual Studio quando viene visualizzato il messaggio di errore "
Microsoft.MixedReality.QR.pdb
non trovato"?
Supporto di dispositivi
Funzionalità | HoloLens prima generazione | HoloLens 2 | Visori VR immersive |
---|---|---|---|
Rilevamento del codice a matrice | ✔️ | ✔ |
Nota
Il rilevamento del codice a matrice con visori VR immersive Windows Mixed Reality nei PC desktop è supportato in Windows 10 versione 2004 e successive. Usare l'API Microsoft.MixedReality.QRCodeWatcher.IsSupported()
per determinare se la funzionalità è supportata nel dispositivo corrente.
Versioni supportate del codice a matrice
Nella tabella seguente sono elencate le versioni di codice a matrice supportate e non supportate:
Versioni del codice a matrice | |
---|---|
Supportate: |
|
Non supportato: |
|
Procedure consigliate per il rilevamento del codice a matrice
Zone silenziose intorno ai codici a matrice
Per essere letti correttamente, i codici a matrice richiedono un margine intorno a tutti i lati del codice. Questo margine non deve contenere alcun contenuto stampato e deve essere di quattro moduli (un singolo quadrato nero nel codice) largo.
La specifica a matrice contiene altre informazioni sulle zone non silenziose.
Illuminazione e sfondo
La qualità del rilevamento del codice a matrice è soggetta a illuminazione e sfondo variabili.
In condizioni di illuminazione normali, fornire un contrasto sufficiente per i moduli neri/bianchi per ottenere prestazioni migliori.
In condizioni di illuminazione estrema con illuminazione luminosa o sfondo scuro, è possibile provare a ridurre e regolare il contrasto che potrebbe migliorare la frequenza di rilevamento del codice a matrice. Lo sfondo bianco all'interno del codice a matrice può essere ridotto da 255 verso il basso.
Dimensioni dei codici a matrice
Windows Mixed Reality dispositivi non funzionano con codici a matrice con lati inferiori a 5 cm.
Per i codici a matrice con lati compresi tra 5 cm e 10 cm, il dispositivo deve essere abbastanza vicino per rilevare il codice. Potrebbe essere necessario più tempo per rilevare il codice.
Il tempo esatto per rilevare i codici dipende non solo dalle dimensioni dei codici a matrice, ma dalla distanza dal codice. Il passaggio più vicino al codice consente di compensare i problemi relativi alle dimensioni.
Distanza e posizione angolare dal codice a matrice
Le telecamere di rilevamento possono rilevare solo un determinato livello di dettaglio. Per i codici piccoli (meno di 10 cm lungo i lati) è necessario essere abbastanza vicini. Per una versione 1 codice a matrice che varia da 10 cm a 25 cm di dimensione, la distanza minima di rilevamento è compresa tra 0,15 metri e 0,5 metri.
La distanza di rilevamento per le dimensioni aumenta in modo lineare, ma dipende anche dalla versione a matrice o dalle dimensioni del modulo supportate. Maggiore è la versione, i moduli più piccoli, che possono essere rilevati solo da una posizione più vicina. È anche possibile provare i codici micro-QR se si vuole che la distanza di rilevamento sia più lunga. Il rilevamento a matrice funziona con un intervallo di angoli += 45 gradi per garantire una risoluzione appropriata per rilevare il codice.
Altre considerazioni sul rilevamento:
- I codici a matrice sulle superfici curve non sono supportati.
- L'orientamento nel piano è supportato. Fuori piano deve essere <= +-45 guardando dritto per avere un rilevamento migliore.
- Le dimensioni fisiche del codice a matrice devono avere moduli di almeno 2/3 pixel. Nota: le versioni successive dei codici a matrice avranno moduli più piccoli.
Per la relazione di compromesso tra distanza e dimensioni del codice a matrice per il rilevamento ottimale, vedere il grafico seguente:
Importante
Assicurati sempre di avere un contrasto sufficiente e un bordo appropriato.
Gestione dei dati del codice a matrice
Windows Mixed Reality dispositivi rilevano codici a matrice a livello di sistema nel driver. Quando il dispositivo viene riavviato o il driver viene riavviato, la cronologia dei codici a matrice rilevata viene cancellata. I codici a matrice rilevati vengono considerati come nuovi oggetti.
È consigliabile configurare l'app per ignorare i codici a matrice precedenti a un timestamp specifico, che può essere specificato all'interno dell'app. L'API del codice a matrice specifica l'ora dell'ultimo rilevamento. La maggior parte degli sviluppatori di app userà l'ora di sistema in cui viene avviata l'app per determinare l'ora in cui viene rilevato un codice a matrice.
I dati del codice a matrice non sono specifici dell'app. Al momento dell'avvio dell'app, verrà fornito un elenco di codici a matrice disponibili. Lo sviluppatore dell'app determinerà quali codici a matrice sono rilevanti per questa app.
Posizionamento del codice a matrice in uno spazio
Per consigli su dove e su come inserire i codici a matrice, vedere Considerazioni sull'ambiente per HoloLens.
Risoluzione dei problemi e domande frequenti
Quali funzionalità sono necessarie?
Sarà necessaria la funzionalità webcam aggiunta al manifesto (casella di controllo in Funzionalità unity). Se stai compilando come progetto UWP standard, è incluso anche nel package.appxmanifest
progetto di soluzione.
Richiedere l'accesso chiamando la funzione seguente:
#if WINDOWS_UWP
async QRCodeWatcher.RequestAccessAsync();
#endif
Lo stato di accesso deve essere (status == QRCodeWatcherAccessStatus::Allowed)
.
Se l'accesso viene negato, la funzionalità restituirà l'accesso negato all'avvio di QRTracking
.
Questa API deve essere chiamata prima di costruire l'oggetto QRCodeWatcher
.
Se si esegue il progetto da Unity, è anche necessario assicurarsi di chiamare dal thread dell'interfaccia utente. In caso contrario, l'API restituirà sempre negato. Per altre informazioni, vedere Classe AppCallbacks nel manuale di Unity.
Per altre informazioni sulla configurazione del progetto per Unity, vedere Configurare Unity per Windows Mixed Reality.
Ricerca per categorie rendere funzionante la funzionalità di rilevamento del codice a matrice sui dispositivi HoloLens 2?
Il rilevamento a matrice è automatico in HoloLens 2 ed è necessaria la funzionalità "webcam" aggiunta all'app.
Dove si trovano i file del plug-in dell'API?
Tutti i file e la documentazione necessari sono disponibili qui.
https://www.nuget.org/packages/Microsoft.MixedReality.QR
Ricerca per categorie preparare una piattaforma UWP per l'uso di Microsoft.MixedReality.QR.QRCodeWatcher?
Usare il pacchetto NuGet per decomprimere i file necessari.
Aggiungere un riferimento a
Microsoft.MixedReality.QR.winmd
nel progetto e iniziare a usare l'API.Aggiungere le versioni dell'architettura corrette dei plug-in e usarle di conseguenza nella compilazione.
Ricerca per categorie preparare Unity con Microsoft.MixedReality.QR.QRCodeWatcher?
Usare NuGet per Unity e puntare al pacchetto NuGet precedente.
Come è possibile creare codici a matrice?
Vedere qualsiasi generatore di codice a matrice. Di seguito è riportato un esempio.
Se il rilevamento del codice a matrice non funziona in generale, cosa faccio?
- La versione del codice a matrice è una versione supportata? Non sono supportate le versioni ad alta densità, ad esempio la versione 40. Nulla sopra la versione 10 è garantito; le versioni precedenti alla 20 non sono supportate.
- Sei abbastanza vicino al codice a matrice? Vedere la distanza e la posizione angolare dal codice a matrice.
- Come funziona l'illuminazione? C'è un problema noto in cui il rilevamento diventa difficile quando il codice a matrice si trova in uno sfondo ambientale scuro: il codice a matrice apparirà lavato alla fotocamera a causa di un contrasto elevato. Per altre informazioni, vedere illuminazione e sfondo.
Qual è l'accuratezza?
Quando viene rilevato in un singolo frame, è previsto che la dimensione abbia al massimo un errore dell'1% rispetto alle dimensioni effettive. Ad esempio, un codice di 10 cm potrebbe essere di dimensioni misurate fino a +/- 1 mm. In caso di rilevamento continuo, la posizione di un codice può essere spostata intorno fino a +/- 2,5 mm. Una volta spostato all'esterno dell'intervallo di rilevamento, la posizione di un rilevamento precedente è alla base dell'errore della mappa.
Quanto è necessario chiudere il codice a matrice per rilevarlo?
La distanza dipende ovviamente dalle dimensioni del codice a matrice e anche dalla versione in cui si tratta. Per altre informazioni, vedere distanza e posizione angolare dal codice a matrice.
- In HoloLens 2, per un codice a matrice versione 1 che varia da 5 cm a 25 cm, la distanza minima di rilevamento è compresa tra 0,25 metri e 0,5 metri. I più a distanza possono essere rilevati da va da circa 0,5 m per il codice più piccolo a due metri per il più grande.
- In Windows Mixed Reality, queste distanze per le dimensioni vengono dimezzate.
- Per i codici più grandi, estrapolare la distanza di rilevamento per le dimensioni aumenta in modo lineare. Per qualsiasi codice più piccolo, il rilevamento non si verifica semplicemente: 4-5 cm è il più piccolo che è possibile rilevare.
Perché non è possibile leggere codici a matrice con logo?
Attualmente non sono supportati codici a matrice con logo.
I codici a matrice vengono rilevati, quindi perché non si ricevono dati?
- Se la piattaforma non è in grado di decodificare il codice a matrice, non saranno presenti dati. È possibile usare il flusso e interpretare i dati usando codice open source.
- Alcune funzionalità, ad esempio l'aggiunta della struttura, non sono supportate.
Per altre informazioni, vedere quali versioni del codice a matrice sono supportate?.
I codici a matrice vengono salvati a livello di "spazio" o di app?
I codici a matrice vengono salvati a livello di sistema nella sessione del driver o nella sessione di avvio in HoloLens. Per altre informazioni, vedere Gestione dei dati del codice a matrice.
Come funziona con la piattaforma sottostante? Dove vengono mantenuti?
I codici a matrice rilevati vengono resi persistenti in memoria dal driver.
Ricerca per categorie eseguire il debug dell'app in Visual Studio quando viene visualizzato il messaggio di errore "Microsoft.MixedReality.QR.pdb
non trovato"?
Il caricamento dei simboli per Microsoft.MixedReality.QR.dll
è stato ignorato perché non è specificato nell'elenco dei moduli inclusi.
Per riprodurre
Seguire la procedura per riprodurre questo comportamento:
- Installare Microsoft.MixedReality.QR (NuGet) e MRTK
- Provare a eseguire il debug
Dovrebbe essere possibile eseguire il debug dell'app con Microsoft.MixedReality.QR.dll, ma la DLL non viene trovata:
Soluzione consigliata
Stiamo lavorando per aggiungere simboli alla versione successiva. Nel frattempo, dovresti comunque essere in grado di eseguire il debug dell'app escludendo la DLL nelle opzioni di Visual Studio:
Per altre informazioni, vedere Configurazione delle impostazioni di Visual Studio.
Esiste un limite di quanti codici a matrice possono essere analizzati in una sessione?
È previsto un limite di 100 codici a matrice salvati a livello di sistema nel driver, entro 10 minuti.
Il processo di smoothing del codice a matrice è cambiato?
Il processo di smoothing del codice a matrice è cambiato dopo 20H2, dalla posa allo smoothing delle dimensioni. Per ripristinare il comportamento del processo di smoothing precedente, è necessario applicare un algoritmo di smoothing se i nuovi dati di posa del codice a matrice vengono rilevati entro 5 secondi o 10 cm del frame rilevato in precedenza. I dati di trasformazione vengono mescolati tramite un rapporto ponderato del 90% del frame corrente con il 10% del frame precedente.