Dies ist der Artikel am 23. Tag des 3D Sensor Adventskalenders 2019.
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.
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 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?
Alle sind einfach zu installieren, aber ich werde sie vorerst mit der neuesten Version von Miniconda (derzeit Miniconda3 4.7.12) installieren.
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
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 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.
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.
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.
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 ...
――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