Da los primeros pasos en la programación de realidad aumentada aprendiendo a generar marcadores de posición de contenido.

Cuando se trata de realidad aumentada, el posicionamiento de objetos virtuales y superposiciones es crucial. Ahí es donde entran los marcadores ArUco. Los marcadores ArUco son patrones binarios simples que puede colocar en escenas de palabras reales para superponer contenido digital.

Puede imprimirlos en papel, mostrarlos en una pantalla o proyectarlos en objetos del mundo real. Esta flexibilidad los convierte en una opción popular en aplicaciones de visión artificial.

El módulo ArUco y la biblioteca OpenCV

Para generar marcadores ArUco, necesita el módulo ArUco que forma parte de la biblioteca OpenCV. OpenCV es una biblioteca que contiene muchas herramientas y funciones para desarrollar aplicaciones de visión por computadora.

El módulo permite generar, detectar y reconocer marcadores ArUco. También le permite realizar una estimación de pose. Esto, a su vez, hace posible alinear objetos virtuales con el mundo real creando una experiencia de usuario inmersiva y perfecta.

instagram viewer

Configuración de su entorno

Crear un nuevo entorno virtual de Python. Esto asegurará que no haya conflicto de versión del paquete cuando instale las bibliotecas requeridas de su proyecto. Luego proceda a la terminal y ejecute el siguiente comando para instalar OpenCV.

pip instalar opencv-contrib-python

El comando anterior instala la biblioteca contrib de OpenCV. Este contiene el módulo ArUco que utilizará para crear el generador de marcadores. Asegúrese de instalar esta versión, no OpenCV-python, porque esta última no incluye la funcionalidad que necesita.

El código fuente completo está disponible en un repositorio GitHub.

Creando el Programa Generador ArUco Maker

Crear el programa marcador ArUco es bastante sencillo. Esto se debe a que el módulo AruCo hace la mayor parte del trabajo pesado por usted. Comience importando OpenCV para permitirle usar sus funciones y herramientas en su código.

importar cv2

Defina una función que generará un solo marcador con una ID específica. Esto servirá cuando los marcadores no se necesiten a granel.

definitivamentegenerar_único_marcador(aruco_dict):
marcador_tamaño = int (entrada ("Ingrese el tamaño del marcador: "))
marcador_id = int (entrada ("Ingrese la ID del marcador: "))

marcador_img = cv2.aruco.generateImageMarker (aruco_dict, marcador_id,
marcador_tamaño)

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

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

cv2.imshow("Marcador", marcador_img)

imprimir("Dimensiones:", marcador_img.forma)

cv2.esperaClave(0)

A continuación, defina una función que generará una cierta cantidad de marcadores a granel. El número de marcadores que puede generar variará según el Diccionario OpenCV tu usas. Esto se debe a que algunos diccionarios admiten la generación de más marcadores que otros.

definitivamentegenerar_bulk_markers(aruco_dict):
marcador_tamaño = int (entrada ("Ingrese el tamaño del marcador: "))
num_marcadores = int (entrada("Ingrese el número de marcadores a generar: "))
marcadores_imgs = []

para marcador_id en rango (num_marcadores):
marcador_img = cv2.aruco.generateImageMarker (aruco_dict, marcador_id,
marcador_tamaño)

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

para marcador_img en marcadores_imgs:
cv2.imshow("Marcador", marcador_img)
imprimir("Dimensiones:", marcador_img.forma)
cv2.esperaClave(0)

Finalmente, defina una función principal que controlará el flujo del programa y le pedirá al usuario la operación deseada. Asegúrese de que se ejecute primero cuando se ejecute el programa.

definitivamenteprincipal():
dict_aruco = cv2.aruco.getDiccionarioPredefinido (cv2.aruco. DICT_4X4_50)

entrada_usuario = entrada("Presione '1' para generar un solo marcador o "
"'2' para generar marcadores de forma masiva: ")

si entrada_usuario == "1":
generar_marcador_único (aruco_dict)
elif entrada_usuario == "2":
generar_bulk_markers (aruco_dict)
demás:
imprimir("Entrada inválida. Inténtalo de nuevo.")

si __nombre__ == "__principal__":
principal()

Ahora ejecute el programa para generar un solo marcador o en masa. La salida del programa se verá así:

La salida muestra un marcador ArUco generado. El programa guarda cada marcador con un número al final de su nombre, que representa la identificación del marcador.

¿Qué sigue después de generar marcadores ArUco?

Después de generar los marcadores ArUco, puede crear su propia aplicación de visión por computadora simple. Esto le ayudará a aprender a usar los marcadores para superponer información digital en imágenes del mundo real. También lo ayudará a apreciar cómo los marcadores contribuyen a una experiencia de usuario completa e inmersiva.