Exécutez AzureKinect en Python la veille de Noël.

Ceci est l'article sur le 23ème jour du Calendrier de l'Avent 3D Sensor 2019.

Aperçu

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.

environnement

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 et Open3D sur Windows

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?

  1. Téléchargez et installez Python
  2. Téléchargez et installez Anaconda (un package contenant divers éléments tels que l'apprentissage automatique et la science des données)
  3. Téléchargez et installez Miniconda (version d'installation minimale d'Anaconda)

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). コメント 2019-12-20 201529.png

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 コメント 2019-12-20 201708.png

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.

Installation d'Open3D

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. コメント 2019-12-20 212336.png

Exécutez l'exemple de module AzureKinect

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.

コメント 2019-12-21 181534.png

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. コメント 2019-12-21 181554.png

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 ...

Regarder en arrière

―― 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

Exécutez AzureKinect en Python la veille de Noël.
Exécutez Python en C ++ sur Visual Studio 2017
Exécutez Python YOLOv3 en C ++ sur Visual Studio 2017
TensorFlow: exécuter des données apprises en Python sur Android
Exécuter des tâches automatisées en Python
Exécuter Python unittest en parallèle
Exécutez Tensorflow 2.x sur Python 3.7
Exécutez le CGI de Python sur CORESERVER
Exécutez CGI écrit en python sur le serveur de location de Sakura
Exécutez la commande unix sur python
Exécutez la commande shell / Python dans R
Exécutez l'image Docker de TensorFlow sur Python3
Exécutez unittest en Python (pour les débutants)
Exécutez un algorithme simple en Python
Exécutez régulièrement Python sur Heroku Scheduler
Trouver des fichiers comme Linux Find en Python
Note de nfc.ContactlessFrontend () de nfcpy de python
[Python] Exécutez Flask sur Google App Engine
Exécuter l'interpréteur Python dans le script
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
[Python] Exécutez Headless Chrome sur AWS Lambda
Exécutez le code Python sur A2019 Community Edition
Exécuter régulièrement des tâches de type cron en Python
Exécutez le serveur python wsgi sur l'unité NGINX
Créez des raccourcis pour exécuter des fichiers Python sur le terminal avec VScode
Le module ne peut pas être importé en Python sur EC2 exécuté à partir d'AWS Lambda
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Mettez MicroPython sur Windows pour exécuter ESP32 sur Python
Exécutez des tâches en arrière-plan sur le serveur sur lequel vous vous êtes connecté
Méta-analyse en Python
Python sur Windows
Unittest en Python
twitter avec python3
Installer le package python dans l'environnement personnel sur Ubuntu
Époque en Python
Allemand en Python
Comment exécuter MeCab sur Ubuntu 18.04 LTS Python
Jusqu'à ce que l'exemple de changefinder s'exécute sur python
DCI en Python
Remarques sur l'utilisation de dict avec python [Competition Pro]
tri rapide en python
nCr en python
Exécutez des applications Web Python avec NGINX + NGINX Unit + Flask
N-Gram en Python
Remarque sur l'encodage lorsque LANG = C en Python
Programmation avec Python
Exécutez Zookeeper x python (kazoo) sur Mac OS X
Plink en Python
Constante en Python
python sur mac
Essayez de travailler avec Mongo en Python sur Mac