Descrição geral do controlo de código QR

Para aceder ao repositório do GitHub para o exemplo de código QR:

Com os auscultadores HoloLens 2 e envolventes, pode detetar códigos QR no ambiente em torno do headset, estabelecendo um sistema de coordenadas na localização real de cada código. Também pode compor hologramas na mesma localização em vários dispositivos para criar uma experiência partilhada. Assim que ativar a câmara Web do seu dispositivo, irá reconhecer códigos QR nas versões mais recentes dos seus projetos. Para obter os melhores resultados em produção, recomendamos que reveja a secção de melhores práticas .

Neste artigo, ficará a saber mais sobre:

Suporte de dispositivos

Funcionalidade HoloLens 1.ª Geração HoloLens 2 Auscultadores envolventes
Deteção de código QR ✔️ ✔️

Nota

O controlo de código QR com headsets de Windows Mixed Reality envolventes em PCs de ambiente de trabalho é suportado no Windows 10 Versão 2004 e superior. Utilize a Microsoft.MixedReality.QRCodeWatcher.IsSupported() API para determinar se a funcionalidade é suportada no dispositivo atual.

Versões de código QR suportadas

A tabela seguinte lista as versões de código QR suportadas e não suportadas:

  Versões do Código QR
Suportado:
  • Versões QR 1 - 10
  • Micro códigos QR M1-M4
  • Todas as codificações
Não suportado:
  • Códigos QR 10 a 20 (estes podem funcionar, mas não são garantidos)
  • Códigos QR 20+
  • Módulos ajustados, por exemplo: módulos circulares, reflexos, invertidos (preto/branco).
  • Logótipos
  • Acréscimos estruturados

    Melhores práticas para deteção de código QR

    Zonas tranquilas em torno de códigos QR

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

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

    Iluminação e pano de fundo

    A qualidade de deteção de código QR é suscetível a uma iluminação e um cenário variados.

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

    • Em condições de iluminação extremas com iluminação brilhante ou cenário escuro, pode tentar reduzir e ajustar o contraste que pode melhorar a taxa de deteção de código QR. O fundo branco no código QR pode ser reduzido de 255 para baixo.

    Tamanho dos códigos QR

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

    Para códigos QR com lados que variam entre 5 cm e 10 cm, o dispositivo tem de estar bastante próximo para detetar o código. Pode demorar mais tempo a detetar o código.

    A hora exata para detetar códigos depende não só do tamanho dos códigos QR, mas do quão longe está do código. Aproximar-se do código ajudará a compensar os problemas com o tamanho.

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

    As câmaras de controlo só podem detetar um determinado nível de detalhe. Para códigos pequenos (menos de 10 cm ao longo dos lados), tem de estar bastante perto. Para um código QR da versão 1 que varia entre 10 cm e 25 cm de tamanho, a distância mínima de deteção é entre 0,15 metros e 0,5 metros.

    A distância de deteção do tamanho aumenta linearmente, mas também depende do tamanho do módulo ou versão QR suportado . Quanto maior for a versão, mais pequenos serão os módulos, que só podem ser detetados a partir de uma posição mais próxima. Também pode experimentar códigos micro-QR se quiser que a distância da deteção seja maior. A deteção de QR funciona com um intervalo de ângulos += 45 graus para garantir que temos uma resolução adequada para detetar o código.

    Outras considerações de deteção:

    • Os códigos QR em superfícies curvas não são suportados.
    • A orientação no plano é suportada. Fora do plano deve ser <= +-45 olhando diretamente para ter uma melhor deteção.
    • O tamanho físico do código QR deve ter módulos de, pelo menos, 2/3 píxeis. Nota: as versões mais altas dos códigos QR terão módulos mais pequenos.

    Para obter a relação de troca entre a distância e o tamanho do código QR para uma deteção ideal, veja o seguinte gráfico:

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

    Importante

    Certifique-se sempre de que tem contraste suficiente e um limite adequado.

    Gerir dados de código QR

    Windows Mixed Reality dispositivos detetar códigos QR ao nível do sistema no controlador. Quando o dispositivo é reiniciado ou o controlador é reiniciado, o histórico de códigos QR detetado é limpo. Os códigos QR redetectados são tratados como novos objetos.

    Recomendamos que configure a sua aplicação para ignorar códigos QR mais antigos do que um carimbo de data/hora específico, que pode ser especificado na aplicação. A API de Código QR especifica a hora em que ocorreu a última deteção. A maioria dos programadores de aplicações utiliza a hora do sistema quando a aplicação é iniciada para determinar a hora em que um código QR é detetado.

    Os dados de código QR não são específicos da aplicação. Após o lançamento da aplicação, será fornecida uma lista de códigos QR disponíveis. O programador da aplicação determinará que códigos QR são relevantes para esta aplicação.

    Colocação de código QR num espaço

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

    Resolução de problemas e FAQ

    Que capacidades são necessárias?

    Precisará da capacidade da câmara Web adicionada ao seu manifesto (caixa de verificação nas Capacidades do Unity). Se estiver a criar como um projeto UWP padrão, também está no package.appxmanifest projeto de solução.

    Peça acesso ao chamar a seguinte função:

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

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

    Se o acesso for negado, a funcionalidade devolverá o acesso negado quando iniciar o QRTracking.

    Esta API deve ser chamada antes de construir o QRCodeWatcher objeto.

    Se estiver a executar o projeto a partir do Unity, também tem de garantir que está a chamar a partir do thread da IU. Caso contrário, a API devolverá sempre negado. Para obter mais informações, veja AppCallbacks class in the Unity Manual (Classe AppCallbacks no Manual do Unity).

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

    Como devo proceder para fazer com que a Funcionalidade de Controlo de Código QR funcione em dispositivos HoloLens 2?

    O controlo QR é automático no HoloLens 2 e precisará da capacidade de "câmara Web" adicionada à sua aplicação.

    Onde posso encontrar os ficheiros de plug-in da API?

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

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

    Como devo proceder para preparar um UWP para utilizar o Microsoft.MixedReality.QR.QRCodeWatcher?

    • Utilize o pacote NuGet para descompactar os ficheiros necessários.

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

    • Adicione as versões de arquitetura corretas dos plug-ins e utilize-as em conformidade na compilação.

    Como devo proceder para preparar o Unity com o Microsoft.MixedReality.QR.QRCodeWatcher?

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

    Como posso criar códigos QR?

    Veja qualquer gerador de código QR– eis um exemplo.

    Se o controlo de código QR não funcionar em geral, o que devo fazer?

    • A versão do Código QR é uma versão suportada? Não suportamos as versões de alta densidade, como a versão 40. Nada acima da versão 10 é garantido; as versões acima de 20 não são suportadas.
    • Está suficientemente perto do código QR? Veja a distância e a posição angular do código QR.
    • Como está a iluminação? Existe um problema conhecido em que a deteção se torna difícil quando o código QR está num fundo ambiental escuro– o código QR aparecerá apagado para a câmara devido ao alto contraste. Para obter mais informações, veja iluminação e pano de fundo.

    Qual é a precisão?

    Quando detetado num único fotograma, 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. Na deteção contínua, a posição de um código pode deslocar-se até +/- 2,5 mm. Depois de sair do intervalo de deteção, a posição de uma deteção anterior está à mercê do erro de mapa.

    Quão perto preciso de estar com o código QR para o detetar?

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

    • No HoloLens 2, para um código QR de versão 1 que varia entre os lados de 5 cm e os 25 cm, a distância mínima de deteção varia entre 0,25 metros e 0,5 metros. O mais longe de onde estes podem ser detetados passa de cerca de 0,5 m para o código mais pequeno para dois metros para o maior.
    • No Windows Mixed Reality, estas distâncias para os tamanhos são reduzidas para metade.
    • Para quaisquer códigos maiores, extrapolar– a distância de deteção do tamanho aumenta linearmente. Para qualquer código mais pequeno, a deteção simplesmente não irá ocorrer - 4-5 cm é o menor que podemos detetar.

    Por que motivo não consigo ler códigos QR com logótipos?

    Atualmente, não suportamos códigos QR com logótipos.

    Os códigos QR são detetados, por que motivo não estou a receber dados?

    • Se a plataforma não conseguir descodificar o código QR, não haverá dados. Pode utilizar o fluxo e interpretar os dados com código open source.
    • Algumas funcionalidades, como o acréscimo de estrutura, não são suportadas.

    Para obter mais informações, veja que versões de código QR são suportadas?.

    Os códigos QR são guardados ao nível do "espaço" ou da aplicação?

    Os códigos QR são guardados ao nível do sistema na sessão do controlador ou na sessão de arranque no HoloLens. Para obter mais informações, veja Gerir dados de código QR.

    Como funciona com a plataforma subjacente? Onde persistem?

    Os códigos QR detetados são mantidos na memória pelo controlador.

    Como devo proceder para depurar a aplicação no Visual Studio quando receber a mensagem de erro "Microsoft.MixedReality.QR.pdbnão encontrado"?

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

    Para reproduzir

    Siga os passos para reproduzir este comportamento:

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

    Deverá conseguir depurar a aplicação com Microsoft.MixedReality.QR.dll, mas a DLL não foi encontrada:

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

    Estamos a trabalhar para adicionar símbolos à próxima versão. Entretanto, ainda deverá conseguir depurar a sua aplicação ao excluir a DLL nas opções do Visual Studio:

    excluir a DLL nas opções do Visual Studio

    Para obter mais informações, veja Configurar as definições do Visual Studio.

    Existe um limite de quantos códigos QR podem ser analisados numa sessão?

    Existe um limite de 100 códigos QR guardados ao nível do sistema no controlador, dentro de 10 minutos.

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

    O processo de suavização do código QR foi alterado após 20H2, de posição de suavização para suavização de tamanho. Para reverter o comportamento para o processo de suavização anterior, aplicar-se-ia um algoritmo de suavização se os novos dados de pose de código QR forem detetados dentro de 5 segundos ou 10 cm da moldura anteriormente detetada. Os dados de transformação são misturados através de uma proporção ponderada de 90% do fotograma atual com 10% do fotograma anterior.

    Ver também