Vue d’ensemble du suivi des codes QR

Pour accéder au référentiel GitHub pour l’exemple de code QR :

Avec HoloLens 2 et des casques immersifs, vous pouvez détecter des codes QR dans l’environnement autour du casque, en établissant un système de coordonnées à l’emplacement réel de chaque code. Vous pouvez également afficher des hologrammes au même emplacement sur plusieurs appareils pour créer une expérience partagée. Une fois que vous avez activé la webcam de votre appareil, vous reconnaîtrez les codes QR dans les dernières versions de vos projets. Pour obtenir de meilleurs résultats en production, nous vous recommandons de passer en revue la section meilleures pratiques .

Cet article porte sur les points suivants :

Prise en charge des appareils

Fonctionnalité HoloLens 1ère génération HoloLens 2 Casques immersifs
Détection de code QR ✔️ ✔️

Notes

Le suivi de code QR avec des casques d’Windows Mixed Reality immersifs sur les PC de bureau est pris en charge sur Windows 10 version 2004 et ultérieure. Utilisez l’API Microsoft.MixedReality.QRCodeWatcher.IsSupported() pour déterminer si la fonctionnalité est prise en charge sur l’appareil actuel.

Versions de code QR prises en charge

Le tableau suivant répertorie les versions de code QR prises en charge et non prises en charge :

  Versions du code QR
Prises en charge :
  • QR versions 1 à 10
  • Micro-codes QR M1-M4
  • Tous les encodages
Non pris en charge :
  • Codes QR 10 à 20 (ils peuvent fonctionner, mais ne sont pas garantis)
  • Codes QR 20+
  • Modules ajustés, par exemple : modules circulaires, réflexions, inversés (noir/blanc).
  • Logos
  • Ajouts structurés

    Bonnes pratiques pour la détection de code QR

    Zones calmes autour des codes QR

    Pour être lu correctement, les codes QR nécessitent une marge autour de tous les côtés du code. Cette marge ne doit pas contenir de contenu imprimé et doit être large de quatre modules (un seul carré noir dans le code).

    La spécification QR contient plus d’informations sur les zones silencieuses.

    Éclairage et toile de fond

    La qualité de la détection de code QR est sensible aux variations de l’éclairage et de la toile de fond.

    • Dans des conditions d’éclairage normales, fournissez un contraste suffisant pour les modules noir/blanc pour de meilleures performances.

    • Dans des conditions d’éclairage extrêmes avec un éclairage lumineux ou un arrière-plan sombre, vous pouvez essayer de réduire et d’ajuster le contraste, ce qui pourrait améliorer le taux de détection de code QR. L’arrière-plan blanc dans le code QR peut être réduit de 255 vers le bas.

    Taille des codes QR

    Windows Mixed Reality appareils ne fonctionnent pas avec des codes QR avec des côtés inférieurs à 5 cm.

    Pour les codes QR avec des côtés allant de 5 cm à 10 cm, l’appareil doit être assez proche pour détecter le code. La détection du code peut prendre plus de temps.

    L’heure exacte de détection des codes dépend non seulement de la taille des codes QR, mais de la distance à laquelle vous êtes loin du code. Le fait de se rapprocher du code permet de compenser les problèmes de taille.

    Distance et position angulaire par rapport au code QR

    Les caméras de suivi ne peuvent détecter qu’un certain niveau de détail. Pour les petits codes (moins de 10 cm sur les côtés), vous devez être assez proche. Pour un code QR version 1 variant de 10 cm à 25 cm, la distance de détection minimale est comprise entre 0,15 mètre et 0,5 mètre.

    La distance de détection pour la taille augmente de manière linéaire, mais dépend également de la version QR ou de la taille de module prise en charge . Plus la version est élevée, plus les modules sont petits, ce qui ne peut être détecté qu’à partir d’une position plus proche. Vous pouvez également essayer des micro-codes QR si vous souhaitez que la distance de détection soit plus longue. La détection QR fonctionne avec une plage d’angles += 45 deg pour garantir une résolution appropriée pour détecter le code.

    Autres considérations relatives à la détection :

    • Les codes QR sur les surfaces courbes ne sont pas pris en charge.
    • L’orientation dans le plan est prise en charge. Hors du plan doit être <= +-45 en regardant droit sur pour avoir une meilleure détection.
    • La taille physique du code QR doit avoir des modules d’au moins 2/3 pixels. Remarque : les versions supérieures des codes QR auront des modules plus petits.

    Pour connaître la relation de compromis entre la distance et la taille du code QR pour une détection optimale, consultez le graphique suivant :

    Graphique de distance de la taille du code QR

    Important

    Assurez-vous toujours que vous avez suffisamment de contraste et une bordure appropriée.

    Gestion des données de code QR

    Windows Mixed Reality appareils détectent les codes QR au niveau du système dans le pilote. Lorsque l’appareil est redémarré ou que le pilote redémarre, l’historique des codes QR détectés est effacé. Les codes QR redetected sont traités comme de nouveaux objets.

    Nous vous recommandons de configurer votre application pour ignorer les codes QR antérieurs à un horodatage spécifique, qui peuvent être spécifiés dans l’application. L’API QR Code spécifie l’heure à laquelle la dernière détection s’est produite. La plupart des développeurs d’applications utilisent l’heure système de lancement de l’application pour déterminer l’heure à laquelle un code QR est détecté.

    Les données de code QR ne sont pas spécifiques à l’application. Au lancement de l’application, une liste de codes QR disponibles sera fournie. Le développeur de l’application détermine quels codes QR sont pertinents pour cette application.

    Placement de code QR dans un espace

    Pour obtenir des recommandations sur l’emplacement et la façon de placer les codes QR, reportez-vous à Considérations relatives à l’environnement pour HoloLens.

    Dépannage et FAQ

    Quelles sont les fonctionnalités nécessaires ?

    Vous devez ajouter la fonctionnalité de webcam à votre manifeste (case à cocher dans Fonctionnalités Unity). Si vous générez en tant que projet UWP standard, il se trouve également dans le package.appxmanifest projet de solution.

    Demandez l’accès en appelant la fonction suivante :

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

    Le status d’accès doit être (status == QRCodeWatcherAccessStatus::Allowed).

    Si l’accès est refusé, la fonctionnalité retourne l’accès refusé lorsque vous démarrez le QRTracking.

    Cette API doit être appelée avant de construire l’objet QRCodeWatcher .

    Si vous exécutez le projet à partir d’Unity, vous devez également vous assurer que vous appelez à partir du thread d’interface utilisateur. Sinon, l’API retourne toujours un refus. Pour plus d’informations, consultez classe AppCallbacks dans le manuel Unity.

    Pour plus d’informations sur la configuration de votre projet pour Unity, consultez Configurer Unity pour Windows Mixed Reality.

    Comment faire faire fonctionner la fonctionnalité de suivi de code QR sur HoloLens 2 appareils ?

    Le suivi QR est automatique sur HoloLens 2, et vous aurez besoin de la fonctionnalité « webcam » ajoutée à votre application.

    Où puis-je trouver les fichiers de plug-in d’API ?

    Vous trouverez tous les fichiers et la documentation nécessaires ici.

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

    Comment faire préparer un UWP pour utiliser Microsoft.MixedReality.QR.QRCodeWatcher ?

    • Utilisez le pack NuGet pour décompresser les fichiers requis.

    • Ajoutez une référence à dans Microsoft.MixedReality.QR.winmd votre projet et commencez à utiliser l’API.

    • Ajoutez les versions d’architecture correctes des plug-ins et utilisez-les en conséquence dans la build.

    Comment faire préparer Unity avec Microsoft.MixedReality.QR.QRCodeWatcher ?

    Utilisez NuGet pour Unity et pointez vers le pack NuGet ci-dessus.

    Comment puis-je créer des codes QR ?

    Découvrez n’importe quel générateur de code QR. Voici un exemple.

    Si le suivi des codes QR ne fonctionne pas en général, que dois-je faire ?

    • La version du code QR est-elle une version prise en charge ? Nous ne prenons pas en charge les versions à haute densité comme la version 40. Rien au-dessus de la version 10 n’est garanti ; les versions supérieures à 20 ne sont pas prises en charge.
    • Êtes-vous assez proche du code QR ? Voir la distance et la position angulaire à partir du code QR.
    • Comment est l’éclairage ? Il existe un problème connu où la détection devient difficile lorsque le code QR est sur un arrière-plan sombre de l’environnement - le code QR apparaîtra délavé à l’appareil photo en raison du contraste élevé. Pour plus d’informations, consultez Éclairage et arrière-plan.

    Quelle est la précision ?

    Lorsqu’elle est détectée dans une seule image, la taille devrait avoir au maximum une erreur de 1 % par rapport à la taille réelle. Par exemple, un code de 10 cm peut être jusqu’à +/- 1 mm de la taille mesurée. Dans la détection continue, la position d’un code peut dériver jusqu’à +/- 2,5 mm. Une fois que vous avez quitté la plage de détection, la position d’une détection précédente est à la hauteur de l’erreur de carte.

    À quel point dois-je être proche du code QR pour le détecter ?

    La distance dépend évidemment de la taille du code QR, et aussi de sa version. Pour plus d’informations, consultez distance et position angulaire à partir du code QR.

    • Sur HoloLens 2, pour un code QR de version 1 variant de 5 cm de côtés à 25 cm, la distance de détection minimale est comprise entre 0,25 mètre et 0,5 mètre. Le plus éloigné de ceux-ci peut être détecté va d’environ 0,5 m pour le code le plus petit à deux mètres pour le plus grand.
    • Sur Windows Mixed Reality, ces distances pour les tailles sont réduites de moitié.
    • Pour tous les codes plus grands, extrapolez : la distance de détection pour la taille augmente linéairement. Pour tout code plus petit, la détection ne se produit tout simplement pas: 4 à 5 cm est le plus petit que nous pouvons détecter.

    Pourquoi ne puis-je pas lire des codes QR avec des logos ?

    Actuellement, nous ne prenons pas en charge les codes QR avec des logos.

    Les codes QR sont détectés, alors pourquoi n’obtiens-je aucune donnée ?

    • Si la plateforme ne peut pas décoder le code QR, il n’y aura aucune donnée. Vous pouvez utiliser le flux et interpréter les données à l’aide de code open source.
    • Certaines fonctionnalités, telles que l’ajout de structure, ne sont pas prises en charge.

    Pour plus d’informations, consultez quelles versions de code QR sont prises en charge ?.

    Les codes QR sont-ils enregistrés au niveau de l’espace ou de l’application ?

    Les codes QR sont enregistrés au niveau du système dans une session de pilote ou une session de démarrage sur HoloLens. Pour plus d’informations, consultez Gestion des données de code QR.

    Comment cela fonctionne-t-il avec la plateforme sous-jacente ? Où sont-ils persistants ?

    Les codes QR détectés sont conservés en mémoire par le pilote.

    Comment faire déboguer l’application dans Visual Studio quand je reçois le message d’erreur «Microsoft.MixedReality.QR.pdb introuvable » ?

    Le chargement des symboles pour Microsoft.MixedReality.QR.dll a été ignoré, car il n’est pas spécifié dans la liste des modules inclus.

    Pour reproduire

    Suivez les étapes pour reproduire ce comportement :

    1. Installer Microsoft.MixedReality.QR (NuGet) et MRTK
    2. Essayer de déboguer

    Vous devriez pouvoir déboguer l’application avec Microsoft.MixedReality.QR.dll, mais la DLL est introuvable :

    Message d’erreur Microsoft.MixedReality.QR.pdb introuvable

    Nous travaillons à l’ajout de symboles à la prochaine version. En attendant, vous devriez toujours être en mesure de déboguer votre application en excluant la DLL dans les options Visual Studio :

    exclusion de la DLL dans les options Visual Studio

    Pour plus d’informations, consultez Configuration des paramètres de Visual Studio.

    Existe-t-il une limite de nombre de codes QR pouvant être analysés dans une session ?

    Il existe une limite de 100 codes QR enregistrés au niveau du système dans le pilote, dans les 10 minutes.

    Le processus de lissage du code QR a-t-il changé ?

    Le processus de lissage du code QR a changé après 20H2, de lissage de pose à lissage de taille. Pour rétablir le comportement du processus de lissage précédent, on applique un algorithme de lissage si les nouvelles données de pose de code QR sont détectées dans les 5 secondes ou 10 cm de la trame précédemment détectée. Les données de transformation sont fusionnées via un ratio pondéré de 90 % de l’image actuelle avec 10 % de l’image précédente.

    Voir aussi