Führen Sie AzureKinect an Heiligabend in Python aus.

Dies ist der Artikel am 23. Tag des 3D Sensor Adventskalenders 2019.

Überblick

Ich bin seit ungefähr 3 Monaten ein Anfänger mit 3D-Sensorhistorie, aber da ich AzureKinect zur Hand habe, ist dies der 4. Adventskalender, von dem ich dachte, ich würde mein Bestes geben. Ich schrieb einmal in der Woche einen Artikel, Qiita, und schaffte es, hierher zu kommen. Dieses Mal möchte ich als Ziel versuchen, das Azure Kinect Sensor SDK für Anfänger zu verwenden, um eine Verbindung herzustellen und mit Python zu arbeiten.

Umgebung

In Bezug auf die Umgebung beginnt das oben Gesagte mit der Installation von Windows 10 und Azure Kinect Sensor SDK 1.2.0. (Beachten Sie, dass es nicht 1.3.0 ist!)

Installieren Sie zunächst Python und Open3D unter Windows

Installieren Sie zuerst Python. Es gibt viele Möglichkeiten, dies zu tun. Wenn Sie jedoch Anfänger sind und unter Windows installieren möchten, gibt es folgende Möglichkeiten?

  1. Laden Sie Python herunter und installieren Sie es
  2. Laden Sie Anaconda herunter und installieren Sie es (ein Paket, das verschiedene Dinge wie maschinelles Lernen und Datenwissenschaft enthält).
  3. Laden Sie Miniconda herunter und installieren Sie es (Mindestinstallationsversion von Anaconda).

Alle sind einfach zu installieren, aber ich werde sie vorerst mit der neuesten Version von Miniconda (derzeit Miniconda3 4.7.12) installieren. コメント 2019-12-20 201529.png

Es wird nicht empfohlen, es in der Umgebungsvariablen festzulegen. Überprüfen Sie daher die Einstellung, die in die unten stehende Registrierung eingefügt werden soll, und installieren Sie sie コメント 2019-12-20 201708.png

Um Azure Kinect mit Python zu verwenden, schien es einfach, ein Framework namens Open3D zu installieren.

Open3D ist eine Open Source-Bibliothek, die die Entwicklung von Software unterstützt, die 3D-Daten verarbeitet.
Open3D ist C.++Und bietet ein Python-Frontend mit sorgfältig ausgewählten Datenstrukturen und Algorithmen
Es kann in beiden Umgebungen verwendet werden.

... anscheinend ... Tatsächlich ist diese Bibliothek die neueste Version 0.8.0 und unterstützt "Azure Kinect". Damit können Sie arbeiten.

Open3D-Installation

Open3D 0.8.0 unterstützt Python 2.7, 3.5, 3.6 wie unten, funktionierte aber auch mit der neuesten Version 3.7.4. (Open3D funktioniert auf Mac, aber leider scheinen die einzigen AzureKinect-Module Windows und Ubuntu zu sein, sorry!) Wenn Sie den folgenden Befehl verwenden, können Sie ihn vorerst auf einmal eingeben.

(base) D:\>conda install -c open3d-admin open3d

Mit dem folgenden Befehl können Sie vorerst überprüfen, ob Open3D korrekt erkannt wird

python -c "import open3d"

Das oben Gesagte gibt nichts zurück, aber wenn es keinen Fehler gibt, ist es erfolgreich.

Als nächstes führen wir das Beispielmodul aus. Wenn dies in Ordnung ist, ist die Open3D-Installation erfolgreich. Bitte laden Sie das Beispielmodul vom folgenden Github herunter. https://github.com/intel-isl/Open3D

Der Download funktioniert so, als ob er direkt unter D platziert wurde. Wenn Sie das Beispielmodul ausführen möchten, benötigen Sie ein Tool namens matplotlib. Dies kann sofort mit dem Befehl conda install erfolgen.

(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

Hoffentlich sehen Sie einen Bildschirm wie den folgenden. コメント 2019-12-20 212336.png

Führen Sie das AzureKinect-Beispielmodul aus

Lassen Sie uns jetzt das bevorzugte AzureKinect-Modul ausführen! Hier ist ein Beispiel zum Ausführen azure_kinect_viewer.py

(base) D:\Open3D-master>python examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py --align_depth_to_color

Hier gibt es jedoch eine Einschränkung. -Es scheint, dass der Ordnername im Programm mit dem Namen SDK1.2.0 direkt referenziert wird und nicht mit SDK1.3.0 funktioniert (Möglicherweise ist es möglich, wenn Sie ihn in den Ordnernamen 1.3.0 umbenennen, in diesem Fall jedoch Umgebungsvariablen usw.). Änderungsbedarf)

  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

Ich bin mir nicht sicher, weil es ein Teil ist, der keinen Fehler zu verursachen scheint, selbst wenn ich es überprüfe, also vorerst Ich kann nur vermuten, dass update_geometry () jedes Mal, wenn es aktualisiert wird, einige seltsame Parameter übergibt. Vorerst Zeile 36 vis.update_geometry() Durch Löschen kann der Bildschirm nicht aktualisiert werden, sondern nur der Vorgang wurde bestätigt.

azure_kinect_viewer.py Auszug


        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() <==Löschen Sie diesen Teil
            vis.poll_events()
            vis.update_renderer()

Obwohl es sich um ein Standbild handelte, konnte ich den Betrieb von Azure Kinect bestätigen.

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

Eigentlich gibt es links ein Farbfoto, aber da der Raum schmutzig war, nur Tiefe ... Das obige Bild ist übrigens ein Bild des Tiefenbildes mit korrigierter Kamera. Wie ich in Teil 3 vorgestellt habe, verfügt Azure Kinect über eine Funktion, die bereits Korrekturen mit internen Kameraparametern anwendet, und Sie können den korrigierten Status abrufen. Vor der Korrektur können Sie ein Bild wie dieses erhalten. コメント 2019-12-21 181554.png

Es ist hilfreich, dies problemlos mit Azure Kinect tun zu können, da es nicht möglich ist, im richtigen 3D auszurichten, es sei denn, es befindet sich im korrigierten Zustand.

... Diese Open3D ist übrigens sehr einfach. Insbesondere hat der Zeichenprozess nur 3 Zeilen (4 Zeilen einschließlich Kommentare), sodass die Gesamtzahl der Skripte sehr gering ist. Dieser Teil unten ist wirklich einfach.

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

Ich habe es geschafft, es in Python anzuzeigen ...

Zurückblicken

――Dieses Mal hatte ich erwartet, dass es nicht nur auf Python, sondern auch auf Mac funktioniert, aber das hat nicht funktioniert. --Open3D, eine Bibliothek, die vielversprechend aussieht. Ich habe jedoch das Gefühl, dass es einige einfache Mängel gibt, wahrscheinlich weil sie mit sehr hoher Geschwindigkeit wachsen. Ich freue mich darauf (es scheint, dass das Dokument eine nicht implementierte Beschreibung enthält), daher denke ich, dass es schrittweise verbessert wird, wenn ich es verwende. ――Ein bisschen scheint es einfach zu sein, mit Python umzugehen, aber der Zeichenprozess von Azure Kinect ist schwierig, die asynchrone Handhabung des Sensorteils scheint schwierig zu sein, und ich bin vage besorgt, ob es von Python gesteuert werden kann. Die Verbindung mit Python scheint jedoch mit maschinellem Lernen usw. verbunden zu sein, sodass es gut aussieht.

Auch diesmal endete es mit einem rudimentären Anfang. Ich konnte in allen vier Artikeln nicht aus dem Zustand herauskommen, Anfänger von Anfängern zu sein. Ich möchte jedoch weiterhin Aktivitäten durchführen, die das Erlernen von 3D-Sensoren vertiefen. Ich möchte Herrn Yurufuwa UNA für die Bereitstellung dieses Ortes sowie denjenigen, die mich gelesen und unterstützt haben, danken. Vielen Dank.

Morgen, 24. Heiligabend, ist pisa-kuns "Fassen wir den vorbestellbaren Gedenk-Lidar RealSense l515 zusammen". RealSense L515 sieht gut aus, nicht wahr? Wenn ich es in Japan verkaufe, habe ich das Gefühl, dass ich es auch habe ... Nächstes Jahr werde ich weiterhin mein Bestes mit Technologien im Zusammenhang mit xR- und 3D-Sensoren geben.

Recommended Posts

Führen Sie AzureKinect an Heiligabend in Python aus.
Führen Sie Python in C ++ unter Visual Studio 2017 aus
Führen Sie Python YOLOv3 in C ++ unter Visual Studio 2017 aus
TensorFlow: Führen Sie in Python gelernte Daten unter Android aus
Führen Sie automatisierte Jobs in Python aus
Führen Sie Python unittest parallel aus
Führen Sie Tensorflow 2.x unter Python 3.7 aus
Führen Sie Pythons CGI auf CORESERVER aus
Führen Sie in Python geschriebenes CGI auf Sakuras Mietserver aus
Führen Sie den Unix-Befehl auf Python aus
Führen Sie den Shell-Befehl / Python in R aus
Führen Sie das Docker-Image von TensorFlow unter Python3 aus
Führen Sie unittest in Python aus (für Anfänger)
Führen Sie einen einfachen Algorithmus in Python aus
Führen Sie Python regelmäßig auf Heroku Scheduler aus
Suchen Sie nach Dateien wie Linux Find in Python
Anmerkung von nfc.ContactlessFrontend () von nfcpy von Python
[Python] Führen Sie Flask in Google App Engine aus
Führen Sie den Python-Interpreter im Skript aus
Lassen Sie einen Servomotor mit Python auf Raspberry Pi 3 laufen
[Python] Führen Sie Headless Chrome unter AWS Lambda aus
Führen Sie Python-Code in der A2019 Community Edition aus
Stellen Sie sicher, dass in Python regelmäßig Cron-ähnliche Jobs ausgeführt werden
Führen Sie den Python-WSGI-Server auf der NGINX-Einheit aus
Erstellen Sie Verknüpfungen, um Python-Dateien auf dem Terminal mit VScode auszuführen
Das Modul kann nicht in Python auf EC2 importiert werden, das von AWS Lambda ausgeführt wird
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Setzen Sie MicroPython unter Windows ein, um ESP32 unter Python auszuführen
Führen Sie Aufgaben im Hintergrund auf dem Server aus, an den Sie gesendet haben
Metaanalyse in Python
Python unter Windows
Unittest in Python
Twitter mit Python3
Installieren Sie das Python-Paket in einer persönlichen Umgebung unter Ubuntu
Epoche in Python
Deutsch in Python
So führen Sie MeCab unter Ubuntu 18.04 LTS Python aus
Bis das Changefinder-Sample auf Python läuft
DCI in Python
Hinweise zur Verwendung von dict mit Python [Competition Pro]
Quicksort in Python
nCr in Python
Führen Sie Python-Webanwendungen mit NGINX + NGINX Unit + Flask aus
N-Gramm in Python
Hinweis zur Codierung bei LANG = C in Python
Programmieren mit Python
Führen Sie Zookeeper x Python (Kazoo) unter Mac OS X aus
Plink in Python
Konstante in Python
Python auf Mac
Versuchen Sie, mit Mongo in Python auf dem Mac zu arbeiten