Información general sobre el seguimiento de códigos QR

Para acceder al repositorio de GitHub para el ejemplo de código QR:

Con HoloLens 2 y cascos envolventes, puede detectar códigos QR en el entorno alrededor del casco, estableciendo un sistema de coordenadas en la ubicación real de cada código. También puede representar hologramas en la misma ubicación en varios dispositivos para crear una experiencia compartida. Una vez que habilite la cámara web del dispositivo, reconocerá los códigos QR en las versiones más recientes de sus proyectos. Para obtener los mejores resultados en producción, se recomienda revisar la sección de procedimientos recomendados .

En este artículo, aprenderá sobre:

Compatibilidad con dispositivos

Característica HoloLens de 1.ª generación HoloLens 2 Cascos envolventes
Detección de código QR ✔️ ✔️

Nota

El seguimiento de código QR con cascos envolventes Windows Mixed Reality en equipos de escritorio es compatible con Windows 10 versión 2004 y posteriores. Use la Microsoft.MixedReality.QRCodeWatcher.IsSupported() API para determinar si la característica es compatible con el dispositivo actual.

Versiones de código QR compatibles

En la tabla siguiente se enumeran las versiones de código QR admitidas y no admitidas:

  Versiones de código QR
Compatible:
  • Versiones QR 1 - 10
  • Códigos QR micro M1-M4
  • Todas las codificaciones
No compatible:
  • Códigos QR 10 - 20 (estos pueden funcionar, pero no están garantizados)
  • Códigos QR 20+
  • Módulos retocados, por ejemplo: módulos circulares, reflejos, invertidos (blanco/negro).
  • Logotipos
  • Anexos estructurados

    Procedimientos recomendados para la detección de código QR

    Zonas tranquilas en torno a códigos QR

    Para leer correctamente, los códigos QR requieren un margen alrededor de todos los lados del código. Este margen no debe contener ningún contenido impreso y debe ser cuatro módulos (un solo cuadrado negro en el código) ancho.

    La especificación QR contiene más información sobre zonas tranquilas.

    Iluminación y fondo

    La calidad de detección de código QR es susceptible a la iluminación y el fondo variables.

    • En condiciones de iluminación normales, proporcione suficiente contraste para los módulos negros y blancos para mejorar el rendimiento.

    • En condiciones de iluminación extremas con iluminación brillante o fondo oscuro, puede intentar reducir y ajustar el contraste, lo que podría mejorar la tasa de detección de código QR. El fondo blanco dentro del código QR se puede reducir de 255 hacia abajo.

    Tamaño de códigos QR

    Windows Mixed Reality dispositivos no funcionan con códigos QR con lados inferiores a 5 cm.

    Para los códigos QR con lados que van de 5 cm a 10 cm, el dispositivo debe estar bastante cerca para detectar el código. Puede tardar más tiempo en detectar el código.

    El tiempo exacto para detectar códigos no solo depende del tamaño de los códigos QR, sino de la distancia que se encuentra del código. Al acercarse más al código, se ayudará a compensar los problemas con el tamaño.

    Distancia y posición angular desde el código QR

    Las cámaras de seguimiento solo pueden detectar un cierto nivel de detalle. Para códigos pequeños (menos de 10 cm a lo largo de los lados), debe estar bastante cerca. Para un código QR de versión 1 que varía de 10 cm a 25 cm de tamaño, la distancia mínima de detección es entre 0,15 metros y 0,5 metros.

    La distancia de detección para el tamaño aumenta linealmente, pero también depende de la versión de QR o el tamaño del módulo admitidos . Cuanto mayor sea la versión, menor será el módulo, que solo se puede detectar desde una posición más cercana. También puede probar códigos micro-QR si desea que la distancia de detección sea más larga. La detección de QR funciona con un intervalo de ángulos += 45 g para asegurarnos de que tenemos una resolución adecuada para detectar el código.

    Otras consideraciones de detección:

    • No se admiten códigos QR en superficies curvadas.
    • Se admite la orientación en plano. Fuera del plano debe ser <= +-45 mirando directamente para tener una mejor detección.
    • El tamaño físico del código QR debe tener módulos de al menos 2/3 píxeles. Nota: Las versiones posteriores de los códigos QR tendrán módulos más pequeños.

    Para ver la relación de equilibrio entre la distancia y el tamaño del código QR para una detección óptima, consulte el gráfico siguiente:

    Gráfico de distancia de tamaño del código QR

    Importante

    Asegúrese siempre de que tiene suficiente contraste y un borde adecuado.

    Administración de datos de código QR

    Windows Mixed Reality dispositivos detectan códigos QR en el nivel de sistema del controlador. Cuando se reinicia el dispositivo o se reinicia el controlador, se borra el historial de códigos QR detectados. Los códigos QR detectados se tratan como nuevos objetos.

    Se recomienda configurar la aplicación para omitir los códigos QR anteriores a una marca de tiempo específica, que se puede especificar dentro de la aplicación. La API de código QR especifica la hora en que se produjo la última detección. La mayoría de los desarrolladores de aplicaciones usarán la hora del sistema cuando se inicie la aplicación para determinar la hora en que se detecta un código QR.

    Los datos de código QR no son específicos de la aplicación. Tras el inicio de la aplicación, se proporcionará una lista de códigos QR disponibles. El desarrollador de la aplicación determinará qué códigos QR son relevantes para esta aplicación.

    Colocación de código QR en un espacio

    Para obtener recomendaciones sobre dónde y cómo colocar códigos QR, consulte Consideraciones de entorno para HoloLens.

    Solución de problemas y preguntas frecuentes

    ¿Qué funcionalidades son necesarias?

    Necesitará la funcionalidad de cámara web agregada al manifiesto (casilla de verificación en Funcionalidades de Unity). Si vas a compilar como un proyecto de UWP estándar, también se encuentra en el package.appxmanifest proyecto de la solución.

    Solicite acceso mediante una llamada a la siguiente función:

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

    El estado de acceso debe ser (status == QRCodeWatcherAccessStatus::Allowed).

    Si se deniega el acceso, la característica devolverá el acceso denegado al iniciar .QRTracking

    Se debe llamar a esta API antes de construir el QRCodeWatcher objeto .

    Si ejecuta el proyecto desde Unity, también debe asegurarse de que llama desde el subproceso de interfaz de usuario. De lo contrario, la API siempre devolverá denegada. Para obtener más información, vea Clase AppCallbacks en el Manual de Unity.

    Para obtener más información sobre cómo configurar el proyecto para Unity, consulte Configuración de Unity para Windows Mixed Reality.

    Cómo hacer que la característica de seguimiento de código QR funcione en dispositivos HoloLens 2?

    El seguimiento QR es automático en HoloLens 2, y necesitará la funcionalidad "webcam" agregada a la aplicación.

    ¿Dónde encuentro los archivos del complemento de API?

    Todos los archivos y documentación necesarios se pueden encontrar aquí.

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

    Cómo preparar una UWP para usar Microsoft.MixedReality.QR.QRCodeWatcher?

    • Use el paquete NuGet para desempaquetar los archivos necesarios.

    • Agregue una referencia a en el Microsoft.MixedReality.QR.winmd proyecto y empiece a usar la API.

    • Agregue las versiones de arquitectura correctas de los complementos y úselas en consecuencia en la compilación.

    Cómo preparar Unity con Microsoft.MixedReality.QR.QRCodeWatcher?

    Use NuGet para Unity y apunte al paquete nuGet anterior.

    ¿Cómo puedo hacer códigos QR?

    Consulte cualquier generador de código QR: este es un ejemplo.

    Si el seguimiento de código QR no funciona en general, ¿qué hago?

    • ¿La versión del código QR es compatible? No se admiten las versiones de alta densidad como la versión 40. No se garantiza nada por encima de la versión 10; No se admiten versiones anteriores a 20.
    • ¿Estás lo suficientemente cerca del código QR? Ver la distancia y la posición angular desde el código QR.
    • ¿Cómo está la iluminación? Hay un problema conocido en el que la detección se vuelve difícil cuando el código QR está en un fondo ambiental oscuro; el código QR aparecerá lavado a la cámara debido al contraste alto. Para obtener más información, consulta iluminación y telón de fondo.

    ¿Cuál es la precisión?

    Cuando se detecta en un solo fotograma, se espera que el tamaño tenga como máximo un error del 1 % del tamaño real. Por ejemplo, un código de 10 cm puede ser de hasta +/- 1 mm desactivado en tamaño medido. En la detección continua, la posición de un código puede desplazarse hasta +/- 2,5 mm. Una vez que haya salido del intervalo de detección, la posición de una detección anterior estará a la misericordia del error del mapa.

    ¿Qué cerca necesito que sea el código QR para detectarlo?

    Obviamente, la distancia depende del tamaño del código QR y también de la versión que es. Para obtener más información, consulte distancia y posición angular desde el código QR.

    • En HoloLens 2, para un código QR versión 1 que varía de 5 cm a 25 cm lados, la distancia mínima de detección oscila entre 0,25 metros y 0,5 metros. El más alejado se puede detectar desde va de aproximadamente 0,5 m para el código más pequeño a dos metros para el mayor.
    • En Windows Mixed Reality, estas distancias para los tamaños se reducen a la mitad.
    • Para los códigos más grandes, extrapolar: la distancia de detección para el tamaño aumenta linealmente. Para cualquier código más pequeño, la detección simplemente no se producirá--4-5 cm es la más pequeña que podemos detectar.

    ¿Por qué no puedo leer códigos QR con logotipos?

    Actualmente, no se admiten códigos QR con logotipos.

    Se detectan los códigos QR, ¿por qué no recibo datos?

    • Si la plataforma no puede descodificar el código QR, no habrá datos. Puede usar la secuencia e interpretar los datos mediante código abierto.
    • No se admiten algunas características, como la anexión de la estructura.

    Para obtener más información, consulte ¿Qué versiones de código QR se admiten?.

    ¿Los códigos QR se guardan en el nivel de "espacio" o en el nivel de la aplicación?

    Los códigos QR se guardan en el nivel del sistema en la sesión del controlador o en la sesión de arranque en HoloLens. Para obtener más información, consulte Administración de datos de código QR.

    ¿Cómo funciona eso con la plataforma subyacente? ¿Dónde se conservan?

    El controlador conserva los códigos QR detectados en la memoria.

    Cómo depurar la aplicación en Visual Studio cuando recibo el mensaje de error "Microsoft.MixedReality.QR.pdbno encontrado"?

    Se omitió la carga de símbolos para Microsoft.MixedReality.QR.dll porque no se especifica en la lista de módulos incluidos.

    Para reproducir

    Siga los pasos para reproducir este comportamiento:

    1. Instalación de Microsoft.MixedReality.QR (NuGet) y MRTK
    2. Intente depurar

    Debería poder depurar la aplicación con Microsoft.MixedReality.QR.dll, pero no se encuentra el archivo DLL:

    Mensaje de error Microsoft.MixedReality.QR.pdb no encontrado

    Estamos trabajando para agregar símbolos a la próxima versión. Mientras tanto, todavía debería poder depurar la aplicación excluyendo el archivo DLL en las opciones de Visual Studio:

    excluir el archivo DLL en las opciones de Visual Studio

    Para obtener más información, vea Configuración de la configuración de Visual Studio.

    ¿Hay un límite de cuántos códigos QR se pueden examinar en una sesión?

    Hay un límite de 100 códigos QR guardados en el nivel del sistema en el controlador, en un plazo de 10 minutos.

    ¿Ha cambiado el proceso de suavizado de código QR?

    El proceso de suavizado de código QR cambió después de 20H2, de suavizado de posición a suavizado de tamaño. Para revertir el comportamiento al proceso de suavizado anterior, se aplicaría un algoritmo de suavizado si el nuevo código QR posa datos en un plazo de 5 segundos o 10 cm del marco detectado anteriormente. Los datos de transformación se combinan a través de una relación ponderada del 90 % del fotograma actual con el 10 % del fotograma anterior.

    Consulte también