Visão geral do rastreamento de código QR

Para acessar o repositório GitHub para o exemplo de código QR:

Com HoloLens 2 e headsets imersivos, você pode detectar códigos QR no ambiente ao redor do fone de ouvido, estabelecendo um sistema de coordenadas no local real de cada código. Você também pode renderizar hologramas no mesmo local em vários dispositivos para criar uma experiência compartilhada. Depois de habilitar a webcam do dispositivo, você reconhecerá códigos QR nas versões mais recentes de seus projetos. Para obter os melhores resultados em produção, recomendamos que você examine a seção de práticas recomendadas .

Neste artigo, os seguintes tópicos serão abordados:

Suporte a dispositivos

Recurso HoloLens 1ª Geração HoloLens 2 Headsets imersivos
Detecção de código QR ✔️ ✔️

Observação

Há suporte para acompanhamento de código QR com headsets de Windows Mixed Reality imersivos em computadores desktop no Windows 10 versão 2004 e superior. Use a Microsoft.MixedReality.QRCodeWatcher.IsSupported() API para determinar se o recurso tem suporte no dispositivo atual.

Versões de código QR com suporte

A tabela a seguir lista as versões de código QR com suporte e sem suporte:

  Versões do QR Code
Com suporte:
  • QR versões 1 a 10
  • Micro códigos QR M1-M4
  • Todas as codificações
Não compatível:
  • Códigos QR 10 a 20 (eles podem funcionar, mas não são garantidos)
  • QR Codes 20+
  • Módulos ajustados, por exemplo: módulos circulares, reflexões, invertidos (preto/branco).
  • Logotipos
  • Acréscimos estruturados

    Práticas recomendadas para detecção de código QR

    Zonas silenciosas em torno de códigos QR

    Para serem lidos corretamente, os códigos QR exigem uma margem em todos os lados do código. Essa margem não deve conter nenhum conteúdo impresso e deve ter quatro módulos (um único quadrado preto no código).

    A especificação de QR contém mais informações sobre zonas silenciosas.

    Iluminação e pano de fundo

    A qualidade da detecção de código QR é suscetível a iluminação variável e pano de fundo.

    • Em condições normais de iluminação, forneça contraste suficiente para os módulos preto/branco para melhorar o desempenho.

    • Em condições extremas de iluminação com iluminação brilhante ou cenário escuro, você pode tentar reduzir e ajustar o contraste, o que pode melhorar a taxa de detecção de código QR. A tela de fundo branca dentro do código QR pode ser reduzida de 255 para baixo.

    Tamanho dos códigos QR

    Windows Mixed Reality dispositivos não funcionam com códigos QR com lados menores que 5 cm.

    Para códigos QR com lados que variam de 5 cm a 10 cm, o dispositivo deve estar bastante próximo para detectar o código. Pode levar mais tempo para detectar o código.

    O tempo exato para detectar códigos depende não apenas do tamanho dos códigos QR, mas do quão longe você está do código. Aproximar-se do código ajudará a compensar problemas com o tamanho.

    Distância e posição angular do código QR

    As câmeras de rastreamento só podem detectar um determinado nível de detalhes. Para códigos pequenos (menos de 10 cm ao longo dos lados), você deve estar bastante próximo. Para um código QR de versão 1 que varia de 10 cm a 25 cm de tamanho, a distância mínima de detecção é entre 0,15 metros e 0,5 metros.

    A distância de detecção do tamanho aumenta linearmente, mas também depende do tamanho da versão do QR ou do módulo com suporte. Quanto maior a versão, menor será os módulos, que só podem ser detectados de uma posição mais próxima. Você também pode experimentar códigos micro-QR se quiser que a distância de detecção seja maior. A detecção de QR funciona com um intervalo de ângulos += 45 deg para garantir que tenhamos uma resolução adequada para detectar o código.

    Outras considerações de detecção:

    • Não há suporte para códigos QR em superfícies curvas.
    • Há suporte para orientação no plano. Fora do plano deve ser <= +-45 olhando diretamente para ter melhor detecção.
    • O tamanho físico do código QR deve ter módulos de pelo menos 2/3 pixels. Observação: versões mais altas de códigos QR terão módulos menores.

    Para obter a relação de compensação entre a distância e o tamanho do código QR para obter a detecção ideal, consulte o seguinte grafo:

    Gráfico de distância do tamanho do código QR

    Importante

    Sempre verifique se você tem contraste suficiente e uma borda adequada.

    Gerenciando dados de código QR

    Windows Mixed Reality dispositivos detectam códigos QR no nível do sistema no driver. Quando o dispositivo é reinicializado ou o driver é reiniciado, o histórico de códigos QR detectados é limpo. Os códigos QR redetecidos são tratados como novos objetos.

    Recomendamos configurar seu aplicativo para ignorar códigos QR mais antigos do que um carimbo de data/hora específico, que pode ser especificado dentro do aplicativo. A API de Código QR especifica a hora em que a última detecção aconteceu. A maioria dos desenvolvedores de aplicativos usará a hora do sistema quando o aplicativo for iniciado para determinar a hora em que um código QR é detectado.

    Os dados de código QR não são específicos do aplicativo. Após a inicialização do aplicativo, haverá uma lista de códigos QR disponíveis sendo fornecidos. O desenvolvedor do aplicativo determinará quais códigos QR são relevantes para este aplicativo.

    Posicionamento de código QR em um espaço

    Para obter recomendações sobre onde e como colocar códigos QR, consulte Considerações de ambiente para HoloLens.

    Solução de problemas e perguntas frequentes

    Quais recursos são necessários?

    Você precisará da funcionalidade de webcam adicionada ao manifesto (caixa de seleção em Funcionalidades do Unity). Se você estiver criando como um projeto UWP padrão, ele também estará no package.appxmanifest projeto de solução.

    Solicite acesso chamando a seguinte função:

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

    O status de acesso deve ser (status == QRCodeWatcherAccessStatus::Allowed).

    Se o acesso for negado, o recurso retornará o acesso negado quando você iniciar o QRTracking.

    Essa API deve ser chamada antes de você construir o QRCodeWatcher objeto.

    Se você estiver executando o projeto no Unity, também precisará garantir que está chamando do thread da interface do usuário. Caso contrário, a API sempre retornará negada. Para obter mais informações, consulte Classe AppCallbacks no Manual do Unity.

    Para obter mais informações sobre como configurar seu projeto para o Unity, consulte configurar o Unity para Windows Mixed Reality.

    Como fazer fazer o recurso de rastreamento de código QR funcionar em dispositivos HoloLens 2?

    O rastreamento de QR é automático em HoloLens 2 e você precisará da funcionalidade "webcam" adicionada ao seu aplicativo.

    Onde encontro os arquivos de plug-in de API?

    Todos os arquivos e documentação necessários podem ser encontrados aqui.

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

    Como fazer preparar um UWP para usar Microsoft.MixedReality.QR.QRCodeWatcher?

    • Use o pacote NuGet para desempacotar os arquivos necessários.

    • Adicione uma referência ao Microsoft.MixedReality.QR.winmd em seu projeto e comece a usar a API.

    • Adicione as versões de arquitetura corretas dos plug-ins e use-as adequadamente no build.

    Como fazer preparar o Unity com o Microsoft.MixedReality.QR.QRCodeWatcher?

    Use o NuGet para Unity e aponte para o pacote NuGet acima.

    Como posso fazer códigos QR?

    Confira qualquer gerador de código QR – aqui está um exemplo.

    Se o rastreamento de código QR não funcionar em geral, o que faço?

    • A versão do QR Code é uma versão com suporte? Não damos suporte às versões de alta densidade, como a versão 40. Nada acima da versão 10 é garantido; Não há suporte para versões acima de 20.
    • Você está perto o suficiente do código QR? Consulte a distância e a posição angular do código QR.
    • Como está a iluminação? Há um problema conhecido em que a detecção se torna difícil quando o código QR está em uma tela de fundo ambiental escura – o código QR aparecerá lavado para a câmera devido ao alto contraste. Para obter mais informações, consulte iluminação e cenário.

    Qual é a precisão?

    Quando detectado em um único quadro, espera-se que o tamanho tenha no máximo um erro de 1% do tamanho real. Por exemplo, um código de 10 cm pode ter até +/- 1 mm de desconto no tamanho medido. Em detecção contínua, a posição de um código pode derivar em até +/- 2,5 mm. Depois de sair do intervalo de detecção, a posição de uma detecção anterior fica à mercê do erro do mapa.

    Quão perto eu preciso estar do código QR para detectá-lo?

    A distância, obviamente, depende do tamanho do código QR e também de qual versão ele é. Para obter mais informações, consulte distância e posição angular do código QR.

    • Em HoloLens 2, para um código QR de versão 1 que varia de 5 cm para lados de 25 cm, a distância mínima de detecção varia de 0,25 metros a 0,5 metros. O mais distante que eles podem ser detectados vai de cerca de 0,5 m para o menor código a dois metros para o maior.
    • Em Windows Mixed Reality, essas distâncias para os tamanhos são reduzidas pela metade.
    • Para códigos maiores, extrapolar – a distância de detecção de tamanho aumenta linearmente. Para qualquer código menor, a detecção simplesmente não ocorrerá– 4-5 cm é o menor que podemos detectar.

    Por que não consigo ler códigos QR com logotipos?

    Atualmente, não há suporte para códigos QR com logotipos.

    Os códigos QR são detectados, então por que não estou recebendo dados?

    • Se a plataforma não puder decodificar o código QR, não haverá dados. Você pode usar o fluxo e interpretar os dados usando código-fonte aberto.
    • Não há suporte para alguns recursos, como acréscimo de estrutura.

    Para obter mais informações, consulte quais versões de código QR têm suporte?.

    Os códigos QR são salvos no nível do aplicativo ou no nível do 'espaço'?

    Os códigos QR são salvos no nível do sistema na sessão do driver ou na sessão de inicialização no HoloLens. Para obter mais informações, consulte Gerenciando dados de código QR.

    Como isso funciona com a plataforma subjacente? Onde eles persistem?

    Os códigos QR detectados são persistidos na memória pelo driver.

    Como fazer depurar o aplicativo no Visual Studio quando receber a mensagem de erro "Microsoft.MixedReality.QR.pdbnão encontrado"?

    O carregamento de símbolos para Microsoft.MixedReality.QR.dll foi ignorado porque não está especificado na lista de módulos incluídos.

    Para reproduzir

    Siga as etapas para reproduzir esse comportamento:

    1. Instalar Microsoft.MixedReality.QR (NuGet) e MRTK
    2. Tentar depurar

    Você deve ser capaz de depurar o aplicativo com Microsoft.MixedReality.QR.dll, mas a DLL não foi encontrada:

    Mensagem de erro Microsoft.MixedReality.QR.pdb não encontrada

    Estamos trabalhando para adicionar símbolos à próxima versão. Enquanto isso, você ainda deve ser capaz de depurar seu aplicativo excluindo a DLL nas opções do Visual Studio:

    excluindo a DLL nas opções do Visual Studio

    Para obter mais informações, consulte Definindo as configurações do Visual Studio.

    Há um limite de quantos códigos QR podem ser verificados em uma sessão?

    Há um limite de 100 códigos QR salvos no nível do sistema no driver, dentro de 10 minutos.

    O processo de suavização de código QR foi alterado?

    O processo de suavização de código QR foi alterado após 20H2, de suavização de pose para suavização de tamanho. Para reverter comportamento ao processo de suavização anterior, aplicaria um algoritmo de suavização se os novos dados de pose de código QR fossem detectados dentro de 5 segundos ou 10 cm do quadro detectado anteriormente. Os dados de transformação são combinados por meio de uma taxa ponderada de 90% do quadro atual com 10% do quadro anterior.

    Confira também