Ceci est l'article sur le 23ème jour du Calendrier de l'Avent 3D Sensor 2019.
Je suis un débutant avec l'histoire des capteurs 3D depuis environ 3 mois, mais comme j'ai AzureKinect à portée de main, c'est le 4ème calendrier de l'Avent que je pensais faire de mon mieux. J'ai écrit un article une fois par semaine, Qiita, et j'ai réussi à arriver ici. Cette fois, comme objectif, j'aimerais essayer d'utiliser le SDK Azure Kinect Sensor au niveau débutant pour me connecter et travailler avec Python.
En ce qui concerne l'environnement, ce qui précède commence avec Windows 10 et Azure Kinect Sensor SDK 1.2.0 installés. (Notez qu'il ne s'agit pas de 1.3.0!)
Tout d'abord, installez Python. Il existe de nombreuses façons de procéder, mais si vous êtes un débutant et que vous souhaitez installer sur Windows, existe-t-il les éléments suivants?
Tous sont faciles à installer, mais pour le moment, je vais les installer avec la dernière version de Miniconda (Miniconda3 4.7.12 pour le moment).
Il n'est pas recommandé de le définir dans la variable d'environnement, vérifiez donc le paramètre à mettre dans le registre ci-dessous et installez-le
Ensuite, pour utiliser Azure Kinect avec Python, il semblait facile d'installer un framework appelé Open3D.
Open3D est une bibliothèque open source qui prend en charge le développement de logiciels gérant les données 3D.
Open3D est C++Et fournit une interface Python avec des structures de données et des algorithmes soigneusement sélectionnés
Il peut être utilisé dans les deux environnements.
... Apparemment ... En fait, cette bibliothèque est la dernière version 0.8.0 et prend en charge «Azure Kinect». Avec cela, vous pouvez travailler.
Open3D 0.8.0 prend en charge Python 2.7, 3.5, 3.6 comme ci-dessous, mais il a également fonctionné avec la dernière version 3.7.4. (Open3D fonctionne sur Mac, mais malheureusement les seuls modules AzureKinect semblent être Window et Ubuntu, désolé!) Pour le moment, si vous utilisez la commande suivante, vous pouvez la saisir d'un seul coup.
(base) D:\>conda install -c open3d-admin open3d
--Exécuter un échantillon Open3D
Pour le moment, vous pouvez vérifier si Open3D est correctement reconnu avec la commande suivante
python -c "import open3d"
Ce qui précède ne renvoie rien, mais s'il n'y a pas d'erreur, c'est réussi.
Ensuite, exécutons l'exemple de module. Si cela vous convient, l'installation d'Open3D est réussie. Veuillez télécharger l'exemple de module à partir du github suivant. https://github.com/intel-isl/Open3D
Le téléchargement fonctionne comme s'il était placé directement sous D. Si vous souhaitez exécuter l'exemple de module, vous avez besoin d'un outil appelé matplotlib. Cela peut être fait immédiatement avec la commande conda install.
(base) D:\>cd D:\Open3D-master\examples\Python\Basic
(base) D:\Open3D-master\examples\Python\Basic>conda install matplotlib
(base) D:\Open3D-master\examples\Python\Basic>python rgbd_redwood.py
J'espère que vous verrez un écran comme celui ci-dessous.
Maintenant, exécutons le module AzureKinect préféré! Voici un exemple à exécuter azure_kinect_viewer.py
(base) D:\Open3D-master>python examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py --align_depth_to_color
Cependant, il y a une mise en garde ici. -Il semble que le nom du dossier dans le programme appelé SDK1.2.0 soit directement référencé, et il ne fonctionne pas avec SDK1.3.0 (cela peut être possible si vous le renommez avec le nom de dossier 1.3.0, mais dans ce cas, les variables d'environnement, etc. Besoin de changer) -Dans mon environnement, j'ai eu l'erreur suivante.
File "examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py", line 72, in <module>
v.run()
File "examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py", line 36, in run
vis.update_geometry()
TypeError: update_geometry(): incompatible function arguments. The following argument types are supported:
1. (self: open3d.open3d.visualization.Visualizer, arg0: open3d.open3d.geometry.Geometry) -> bool
Invoked with: VisualizerWithKeyCallback with name viewer
Je ne suis pas sûr car c'est une partie qui semble ne causer aucune erreur même si je la vérifie, donc pour le moment Je ne peux que deviner que update_geometry () passe des paramètres étranges à chaque fois qu'il se met à jour. Pour le moment, ligne 36 vis.update_geometry() En supprimant, l'écran ne peut pas être mis à jour, mais seule l'opération a été confirmée.
azure_kinect_viewer.extrait py
vis_geometry_added = False
while not self.flag_exit:
rgbd = self.sensor.capture_frame(self.align_depth_to_color)
if rgbd is None:
continue
if not vis_geometry_added:
vis.add_geometry(rgbd)
vis_geometry_added = True
vis.update_geometry() <==Supprimer cette partie
vis.poll_events()
vis.update_renderer()
Ensuite, bien qu'il s'agisse d'une image fixe, j'ai pu confirmer le fonctionnement d'Azure Kinect.
En fait, il y a une photo couleur sur la gauche, mais comme la pièce était sale, seule Profondeur ... À propos, l'image ci-dessus est une image de l'image de profondeur avec la caméra corrigée. Comme je l'ai présenté dans la partie 3, Azure Kinect a une fonction qui applique déjà la correction avec le paramètre de caméra interne, et vous pouvez obtenir l'état corrigé. Avant la correction, vous pouvez obtenir une image comme celle-ci.
Il est utile de pouvoir le faire facilement avec Azure Kinect car il n'est pas possible de s'aligner dans la bonne 3D à moins qu'elle ne soit dans l'état corrigé.
... Au fait, ce Open3D est très simple. D'autant que le processus de dessin ne comporte que 3 lignes (4 lignes y compris les commentaires), le nombre total de scripts est très faible. Cette partie ci-dessous est vraiment simple.
python
vis = o3d.visualization.VisualizerWithKeyCallback()
vis.register_key_callback(glfw_key_escape, self.escape_callback)
vis.create_window('viewer', 1920, 540)
print("Sensor initialized. Press [ESC] to exit.")
J'ai réussi à l'afficher en Python ...
―― Cette fois, je m'attendais à ce que cela fonctionne non seulement sur Python mais aussi sur Mac, mais cela n'a pas fonctionné. --Open3D, une bibliothèque qui semble prometteuse. Cependant, je pense qu'il y a quelques défauts simples, probablement parce qu'ils se développent à une vitesse très élevée. J'attends avec impatience (il semble qu'il y ait une description non implémentée dans le document), donc je pense qu'elle sera améliorée progressivement si je l'utilise. ―― D'une manière ou d'une autre, cela semble facile à gérer avec Python, mais le processus de dessin d'Azure Kinect est lourd, et la gestion asynchrone de la partie capteur semble difficile, donc je me demande vaguement s'il peut être contrôlé par Python. Cependant, la connexion avec Python semble être connectée à l'apprentissage automatique, etc., donc ça a l'air bien.
Donc, cette fois aussi, cela s'est terminé par un début rudimentaire. Je n'ai pas pu sortir de l'état de débutant ou de débutant dans les quatre articles. Cependant, je souhaite continuer à mener des activités pour approfondir l'apprentissage des capteurs 3D sans être découragé par cela. Je voudrais remercier M. Yurufuwa UNA pour avoir fourni cet endroit, ainsi que ceux qui m'ont lu et soutenu. Merci beaucoup.
Demain, le 24e réveillon de Noël, pisa-kun "Résumons le Lidar commémoratif de précommande RealSense l515". RealSense L515 a l'air bien, n'est-ce pas? Quand je le vends au Japon, j'ai l'impression de l'avoir aussi ... L'année prochaine, je continuerai à faire de mon mieux avec les technologies liées aux capteurs xR et 3D.
Recommended Posts