Faites vos premiers pas dans la programmation en réalité augmentée en apprenant à générer des espaces réservés de contenu.
En matière de réalité augmentée, le positionnement des objets virtuels et des superpositions est crucial. C'est là que les marqueurs ArUco entrent en jeu. Les marqueurs ArUco sont de simples motifs binaires que vous pouvez positionner dans des scènes de mots réels pour superposer du contenu numérique.
Vous pouvez les imprimer sur papier, les afficher sur un écran ou les projeter sur des objets du monde réel. Cette flexibilité en fait un choix populaire dans les applications de vision par ordinateur.
Le module ArUco et la bibliothèque OpenCV
Pour générer des marqueurs ArUco, vous avez besoin du module ArUco qui fait partie de la bibliothèque OpenCV. OpenCV est une bibliothèque qui contient de nombreux outils et fonctions pour développer applications de vision par ordinateur.
Le module vous permet de générer, détecter et reconnaître les marqueurs ArUco. Il vous permet également d'effectuer une estimation de pose. Cela permet à son tour d'aligner les objets virtuels sur le monde réel en créant une expérience utilisateur immersive et transparente.
Configuration de votre environnement
Créer un nouvel environnement virtuel Python. Cela garantira qu'il n'y a pas de conflit de version de package lorsque vous installez les bibliothèques requises de votre projet. Passez ensuite au terminal et exécutez la commande suivante pour installer OpenCV.
pip installer opencv-contrib-python
La commande ci-dessus installe la bibliothèque contrib OpenCV. Celui-ci contient le module ArUco que vous utiliserez pour créer le générateur de marqueurs. Assurez-vous d'installer cette version, pas OpenCV-python, car cette dernière n'inclut pas les fonctionnalités dont vous avez besoin.
Le code source complet est disponible dans un Référentiel GitHub.
Création du programme générateur ArUco Maker
La création du programme de marqueur ArUco est assez simple. C'est parce que le module AruCo fait la plupart des gros travaux pour vous. Commencez par importer OpenCV pour vous permettre d'utiliser ses fonctions et outils dans votre code.
importer cv2
Définissez une fonction qui générera un marqueur unique avec un ID spécifique. Cela répondra aux cas où les marqueurs ne sont pas nécessaires en vrac.
définitivementgénérer_single_marker(aruco_dict):
taille_marqueur = int (entrée("Entrez la taille du marqueur: "))
marqueur_id = int (entrée("Entrez l'identifiant du marqueur: "))marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
taille_marqueur)cv2.imwrite("marqueur_{}.png".format (id_marqueur), marqueur_img)
marqueur_img = cv2.imread("marqueur_{}.png".format (id_marqueur))
cv2.imshow("Marqueur", marqueur_img)
imprimer("Dimensions:", marker_img.shape)
cv2.waitKey(0)
Définissez ensuite une fonction qui générera un certain nombre de marqueurs en bloc. Le nombre de marqueurs que vous pouvez générer varie en fonction du Dictionnaire OpenCV tu utilises. En effet, certains dictionnaires prennent en charge la génération de plus de marqueurs que d'autres.
définitivementgenerate_bulk_markers(aruco_dict):
taille_marqueur = int (entrée("Entrez la taille du marqueur: "))
num_markers = int (entrée("Entrez le nombre de marqueurs à générer: "))
marqueur_imgs = []pour marqueur_id dans plage (nombre_marqueurs) :
marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
taille_marqueur)cv2.imwrite("marqueur_{}.png".format (id_marqueur), marqueur_img)
marker_imgs.append (cv2.imread("marqueur_{}.png".format (id_marqueur)))
pour marqueur_img dans marqueur_imgs :
cv2.imshow("Marqueur", marqueur_img)
imprimer("Dimensions:", marker_img.shape)
cv2.waitKey(0)
Enfin, définissez une fonction principale qui contrôlera le déroulement du programme et demandera à l'utilisateur l'opération souhaitée. Assurez-vous qu'il s'exécute en premier lorsque le programme s'exécute.
définitivementprincipal():
aruco_dict = cv2.aruco.getPredefinedDictionary (cv2.aruco. DICT_4X4_50)entrée_utilisateur = entrée("Appuyez sur '1' pour générer un seul marqueur ou "
"'2' pour générer des marqueurs en masse: ")si entrée_utilisateur == "1":
générer_single_marker (aruco_dict)
elif entrée_utilisateur == "2":
generate_bulk_markers (aruco_dict)
autre:
imprimer("Entrée invalide. Veuillez réessayer.")
si __nom__ == "__principal__":
principal()
Exécutez maintenant le programme pour générer un marqueur unique ou en masse. La sortie du programme ressemblera à ceci :
La sortie affiche un marqueur ArUco généré. Le programme enregistre chaque marqueur avec un numéro à la fin de son nom, qui représente l'ID du marqueur.
Quelle est la prochaine étape après la génération des marqueurs ArUco?
Après avoir généré des marqueurs ArUco, vous pouvez créer votre propre application de vision par ordinateur simple. Cela vous aidera à apprendre à utiliser les marqueurs pour superposer des informations numériques sur des visuels du monde réel. Cela vous aidera également à apprécier la façon dont les marqueurs contribuent à l'ensemble de l'expérience utilisateur transparente et immersive.