Dê os primeiros passos na programação de realidade aumentada aprendendo a gerar marcadores de conteúdo.

Quando se trata de realidade aumentada, o posicionamento de objetos virtuais e sobreposições é crucial. É aí que entram os marcadores ArUco. Os marcadores ArUco são padrões binários simples que você pode posicionar em cenas reais para sobrepor conteúdo digital.

Você pode imprimi-los em papel, exibi-los em uma tela ou projetá-los em objetos do mundo real. Essa flexibilidade os torna uma escolha popular em aplicativos de visão computacional.

O Módulo ArUco e a Biblioteca OpenCV

Para gerar marcadores ArUco, você precisa do módulo ArUco que faz parte da biblioteca OpenCV. OpenCV é uma biblioteca que contém muitas ferramentas e funções para o desenvolvimento aplicações de visão computacional.

O módulo permite gerar, detectar e reconhecer marcadores ArUco. Ele também permite que você realize estimativas de pose. Isso, por sua vez, torna possível alinhar objetos virtuais ao mundo real, criando uma experiência de usuário imersiva e perfeita.

instagram viewer

Configurando seu ambiente

Criar um novo ambiente virtual Python. Isso garantirá que não haja conflito de versão do pacote quando você estiver instalando as bibliotecas necessárias do seu projeto. Em seguida, vá para o terminal e execute o seguinte comando para instalar o OpenCV.

pip instalar opencv-contrib-python

O comando acima instala a biblioteca OpenCV contrib. Este contém o módulo ArUco que você usará para criar o gerador de marcadores. Certifique-se de instalar esta versão, não OpenCV-python, porque o último não inclui a funcionalidade que você precisa.

O código-fonte completo está disponível em um Repositório GitHub.

Criando o Programa ArUco Maker Generator

A criação do programa de marcadores ArUco é bastante simples. Isso ocorre porque o módulo AruCo faz a maior parte do trabalho pesado para você. Comece importando OpenCV para permitir que você use suas funções e ferramentas em seu código.

importar cv2

Defina uma função que irá gerar um único marcador com um ID específico. Isso atenderá quando os marcadores não forem necessários em massa.

defgenerate_single_marker(aruco_dict):
marcador_tamanho = int (input("Digite o tamanho do marcador: "))
marcador_id = int (input("Digite o ID do marcador: "))

marcador_img = cv2.aruco.generateImageMarker (aruco_dict, marcador_id,
marcador_tamanho)

cv2.imwrite("marcador_{}.png".format (marker_id), marcador_img)

marcador_img = cv2.imread("marcador_{}.png".format (marcador_id))

cv2.imshow("Marcador", marcador_img)

imprimir("Dimensões:", marcador_img.forma)

cv2.waitKey(0)

Em seguida, defina uma função que irá gerar um certo número de marcadores em massa. O número de marcadores que você pode gerar varia de acordo com o Dicionário OpenCV você usa. Isso ocorre porque alguns dicionários suportam a geração de mais marcadores do que outros.

defgenerate_bulk_markers(aruco_dict):
marcador_tamanho = int (input("Digite o tamanho do marcador: "))
num_markers = int (input("Digite o número de marcadores a serem gerados: "))
marcador_imgs = []

para marcador_id em intervalo (num_marcadores):
marcador_img = cv2.aruco.generateImageMarker (aruco_dict, marcador_id,
marcador_tamanho)

cv2.imwrite("marcador_{}.png".format (marker_id), marcador_img)
marcador_imgs.append (cv2.imread("marcador_{}.png".format (marker_id)))

para marcador_img em marcador_imgs:
cv2.imshow("Marcador", marcador_img)
imprimir("Dimensões:", marcador_img.forma)
cv2.waitKey(0)

Por fim, defina uma função principal que controlará o fluxo do programa e solicite ao usuário a operação desejada. Certifique-se de que ele seja executado primeiro quando o programa for executado.

defprincipal():
aruco_dict = cv2.aruco.getPredefinedDictionary (cv2.aruco. DICT_4X4_50)

user_input = input("Pressione '1' para gerar um único marcador ou "
"'2' para gerar marcadores em massa: ")

se user_input == "1":
generate_single_marker (aruco_dict)
elif user_input == "2":
generate_bulk_markers (aruco_dict)
outro:
imprimir("Entrada inválida. Por favor, tente novamente.")

se __nome__ == "__principal__":
principal()

Agora execute o programa para gerar um único marcador ou em massa. A saída do programa será mais ou menos assim:

A saída mostra um marcador ArUco gerado. O programa salva cada marcador com um número ao final de seu nome, que representa o ID do marcador.

O que vem depois de gerar os marcadores ArUco?

Depois de gerar os marcadores ArUco, você pode criar seu próprio aplicativo simples de visão computacional. Isso ajudará você a aprender como usar os marcadores para sobrepor informações digitais em visuais do mundo real. Isso também ajudará você a avaliar como os marcadores contribuem para uma experiência de usuário envolvente e perfeita.