Comment créer des expériences immersives de réalité augmentée avec OpenCV
La réalité augmentée (RA) fusionne la réalité et le contenu virtuel en superposant des informations numériques à un environnement réel. Ces dernières années, les progrès réalisés dans le domaine de la vision par ordinateur et du traitement d’images ont facilité le développement d’applications de réalité augmentée.
OpenCV est une bibliothèque de vision par ordinateur à code source ouvert très répandue. Elle fournit des outils et des algorithmes qui vous aideront à créer des expériences de réalité augmentée convaincantes. Pour créer le programme de RA, vous choisirez une image de projection, détecterez un objet physique, puis projetterez et restituerez le contenu de RA.
Configuration de l’environnement
Avant de commencer à coder, vous devez préparer votre environnement de développement. Commencez par créer un environnement virtuel, puis exécutez cette commande de terminal pour installer NumPy et OpenCV :
Vous utiliserez OpenCV pour les fonctionnalités de vision par ordinateur et NumPy pour calculer une matrice d’homographie plus loin dans le code.
Assurez-vous d’installer opencv-contrib-python et non pas opencv-python. Ceci est dû au fait que opencv-python n’a pas l’option cv2.aruco dont vous aurez largement besoin pour créer le programme de réalité augmentée.
Le code source complet est disponible dans un dépôt GitHub.
Importation des bibliothèques requises
Créez un nouveau fichier Python. Au début du script, importez OpenCV et NumPy :
L’importation de ces bibliothèques vous permettra d’utiliser leurs fonctions dans votre code.
Choix de l’image de superposition
Lors du rendu d’objets virtuels dans la scène de RA, vous avez besoin d’une image que l’application projettera sur les marqueurs détectés. Chargez l’image d’incrustation à l’aide de la fonction cv2.imread de cv2.imread.
Vous pouvez utiliser d’autres méthodes pour obtenir une image de superposition, comme la génération dynamique d’un modèle 3D.
Détection des marqueurs ArUco
Après avoir choisi l’image de superposition, vous devez déterminer la position de l’image dans votre flux vidéo. Il s’agit de l’endroit où Marqueurs ArUco entrent en jeu. Il s’agit de marqueurs carrés dotés d’un motif d’identification unique qui peut être facilement détecté par des algorithmes de vision par ordinateur.
Lorsqu’une application détecte un marqueur, elle peut réagir en projetant, par exemple, une image à sa place. Vous trouverez ci-dessous un exemple de marqueur ArUco.
Créez une fonction qui détectera les marqueurs ArUco dans votre flux vidéo. La fonction doit convertir le flux vidéo en niveaux de gris. Elle doit ensuite obtenir le dictionnaire ArUco en fonction de la taille du marqueur et du nombre total de marqueurs. Enfin, elle doit détecter les marqueurs dans le flux.
La fonction renvoie les coins et les ID des marqueurs détectés.
Projection de l’image de superposition sur les marqueurs
Une fois que vous avez détecté les marqueurs dans l’image vidéo, vous devez projeter l’image d’incrustation sur eux. Pour ce faire, écrivez une fonction qui calcule la matrice d’homographie entre l’image et la trame vidéo. Il s’agit d’établir une transformation géométrique qui aligne l’image de superposition sur le marqueur ArUco détecté dans l’image vidéo.
Vous devez ensuite déformer l’image de superposition sur la base de l’homographie. Créez ensuite un masque pour définir la région de l’incrustation et, enfin, fusionnez l’image d’incrustation masquée avec l’image vidéo.
La fonction renvoie l’image vidéo avec l’image de recouvrement superposée aux marqueurs ArUco détectés.
Rendu du contenu AR
Pour effectuer le rendu du contenu AR, créez une fonction qui combine les étapes de détection des marqueurs et de projection de l’image. La fonction doit capturer des images vidéo en continu et détecter les marqueurs ArUco. Elle doit ensuite superposer l’image de superposition aux marqueurs.
La fonction affiche l’image vidéo résultante, créant ainsi l’illusion d’objets virtuels apparaissant dans le monde réel.
Pour lancer le programme, exécutez la commande processVideoFeed .
Vous pouvez voir un exemple de sortie du programme dans cette vidéo :
Le marqueur dans votre flux vidéo doit avoir la même taille de marqueur et les mêmes propriétés totales de marqueur que celles que vous avez spécifiées dans le code.
Où la réalité augmentée est-elle appliquée ?
Divers secteurs et domaines utilisent la réalité augmentée pour améliorer l’expérience des clients. Les applications de réalité augmentée utilisées dans ces secteurs permettent aux clients de visualiser l’aspect des produits dans le monde réel.
Familiarisez-vous avec ce type d’application pour voir la technologie en action.
Comment faire de la réalité augmentée en Python ?
La réalité augmentée en Python
- Faire correspondre l’identifiant d’un tag à une image.
- Faites pivoter l’image.
- Utiliser l’homographie pour générer une nouvelle image.
- Effacer la région d’origine de la balise.
- Ajouter la nouvelle image au cadre existant.
Comment faites-vous l’expérience de la réalité augmentée ?
Qu’est-ce que la réalité augmentée ? La réalité augmentée utilise votre appareil pour intégrer du contenu numérique dans le monde réel. Contrairement à la réalité virtuelle (RV), vous n’aurez pas besoin de casques, de lunettes ou d’autres équipements supplémentaires. Tout ce dont vous avez besoin, c’est de l’appareil photo de votre appareil et d’une application de réalité augmentée.
Quels sont les exemples de réalité augmentée ?
La réalité augmentée utilise l’environnement réel existant et y ajoute des informations virtuelles, voire un monde virtuel, afin d’améliorer l’expérience. Pensez par exemple à Pokémon Go, où les utilisateurs recherchent dans leur quartier réel des personnages animés qui apparaissent sur leur téléphone ou leur tablette.
À quoi sert la réalité augmentée ?
La réalité augmentée est utilisée soit pour modifier visuellement les environnements naturels d’une manière ou d’une autre, soit pour fournir des informations supplémentaires aux utilisateurs. Le principal avantage de la réalité augmentée est qu’elle parvient à mélanger des éléments numériques et tridimensionnels (3D) avec la perception qu’a un individu du monde réel.