Empezando a utilizar los ArUco

un inicio a la realidad aumentada con Python

Escrito por Davinson Castaño Cano el 19 de Marzo de 2021 · 3 mins de lectura

Una forma muy fácil de comenzar con la realidad aumentada es con el uso de marcadores, que son piezas fácilmente reconocibles por una cámara, uno de ellos son los ArUco. Esto marcadores pueden ser utilizados fácilmente si tenemos algo de conocimientos en Python.

Instalando los elementos requeridos

Para usar los ArUco en Python, debemos instalar unas librerías:

pip install matplotlib
pip install numpy
pip install opencv-python

Las dos primeras librerías probablemente ya vienen instaladas con Python. La última librería es OpenCV, una librería de código abierto muy utilizada para la visión por computadora (computer vision).

Un primer ejemplo

Una vez instaladas las librerías, podemos correr el siguiente ejemplo para detectar los marcadores .

import numpy as np
import cv2
import cv2.aruco as aruco

cap = cv2.VideoCapture(0)
aruco_dict = aruco.Dictionary_get(aruco.DICT_4X4_50)

while (True):
    
    ret, frame = cap.read() # Capturamos una imagen a la vez
    parameters = aruco.DetectorParameters_create()
    corners, ids, rejectedImgPoints = aruco.detectMarkers(frame, aruco_dict, parameters=parameters)
    
    print(ids)

    frame = aruco.drawDetectedMarkers(frame, corners)

    
    cv2.imshow('frame', frame) # Mostramos en la imagen los ArUcos encontrados
    key = cv2.waitKey(1)
    if key == 27:
        break

cap.release() # Liberamos la cámara al final de la utilización 
cv2.destroyAllWindows()

Adicionalmente necesitamos algunos ArUco, podemos abrir el siguiente Generador de ArUco en el celular para probar el código. A continuación muestro un AruCo:

Espero que haya sido de utilidad esta información, sumérgete en el mundo de la realidad aumentada y aprende un montón en el camino. Si logras detectar un ArUco con éxito cuéntame por mis redes sociales que lo lograste… y si no tienes éxito por favor cuéntame que pasó y ayudarte a lograrlo, de antemano muchas gracias.