Agisoft Metashape ist nicht nur eine grafische Oberfläche für die Erstellung von 3D-Modellen, sondern auch eine leistungsstarke Automatisierungs-Engine. Mit Python-Skripten können Benutzer Metashape im Headless-Modus (d.h. ohne grafische Benutzeroberfläche) ausführen, ideal für serverbasierte Verarbeitung, Batch-Workflows und die Integration in Cloud-Pipelines. In diesem Artikel zeigen wir Ihnen, wie Sie die Python-API von Metashape im Headless-Modus verwenden können, mit Beispielen und Tipps.
Was ist der Headless-Modus in Agisoft Metashape?
Der Headless-Modus bezieht sich auf die Ausführung von Metashape über die Befehlszeile oder Python-Skripte, ohne dass die grafische Benutzeroberfläche gestartet wird. Dies ist besonders nützlich für automatisierte Workflows auf entfernten Servern oder Cloud-Instanzen (z. B. AWS EC2, Google Cloud, Azure).
Warum Headless Scripting verwenden?
- Automatisieren Sie sich wiederholende Arbeitsabläufe (z. B. Importieren von Fotos, Ausrichten, Exportieren)
- Mehrere Aufträge über Nacht im Batch-Modus ausführen
- Verarbeiten Sie Daten in der Cloud, ohne eine GUI zu benötigen
- Integrieren Sie Photogrammetrie in Unternehmens-Pipelines
Anforderungen
- Agisoft Metashape Professional installiert (1.8 oder neuer)
- Gültige Lizenz (node-locked oder floating)
- Python 3.x (wird mit Metashape mitgeliefert)
- Zugriff auf die CLI (Eingabeaufforderung, Terminal, SSH)
Ein Python-Skript kopflos ausführen
Metashape bietet ein Kommandozeilentool, mit dem Sie Python-Skripte ausführen können:
metashape.sh -r script.py
Unter Windows verwenden Sie:
metashape.exe -r C:\path\to\script.py
Sie können dem Skript auch Argumente übergeben:
metashape.exe -r script.py --project_folder "C:\data\site1"
Beispiel für ein kopfloses Skript
Im Folgenden finden Sie ein einfaches Python-Skript, das Bilder lädt, sie ausrichtet und eine dünn besetzte Punktwolke erstellt.
import Metashape
import sys
import os
path = sys.argv[1] if len(sys.argv) > 1 else "project"
images_path = os.path.join(path, "images")
output_path = os.path.join(path, "output.psx")
doc = Metashape.Document()
chunk = doc.addChunk()
chunk.addPhotos([os.path.join(images_path, f) for f in os.listdir(images_path) if f.endswith(".jpg")])
chunk.matchPhotos(accuracy=Metashape.HighAccuracy, preselection=Metashape.GenericPreselection)
chunk.alignCameras()
doc.save(output_path)
Typische Workflow-Schritte in Python
- Fotos importieren
- Kameras ausrichten
- Optimierung der Ausrichtung
- Bauen Sie eine dichte Wolke auf
- DEM bauen
- Orthomosaik oder Netz erstellen
- Ergebnisse exportieren
Wo Sie die Python-API-Referenz finden
Die offizielle Python-API ist hier dokumentiert: https://agisoft.freshdesk.com. Sie enthält Beschreibungen aller Klassen, Methoden und Parameter für die erweiterte Automatisierung.
Beispiel: Vollständiges Automatisierungsskript
# Example: Full pipeline (simplified)
import Metashape
doc = Metashape.Document()
chunk = doc.addChunk()
chunk.addPhotos(["/data/images/img1.jpg", "/data/images/img2.jpg"])
chunk.matchPhotos(accuracy=Metashape.HighAccuracy)
chunk.alignCameras()
chunk.buildDepthMaps(quality=Metashape.MediumQuality)
chunk.buildDenseCloud()
chunk.buildModel()
chunk.buildUV()
chunk.buildTexture()
doc.save("/data/project_complete.psx")
Erweiterte Optionen
- Exportieren von Orthomosaiken als GeoTIFFs
- GCPs aus CSV importieren
- Stapelverarbeitung von mehreren Ordnern
- Cloud-basierte Bereitstellung (Docker, EC2, Fernsynchronisation)
Tipps für die kopflose Hinrichtung
- Verwenden Sie
sys.argv
, um Projekt- oder Bildpfade dynamisch zu übergeben. - Fügen Sie in Skripten für unbeaufsichtigte Ausführungen immer eine Fehlerbehandlung ein.
- Protokollierung des Fortschritts in einer Datei (über
logging
oderprint()
, die an das Protokoll weitergeleitet wird) - Prüfen Sie die Verfügbarkeit von Lizenzen, wenn Sie Floating-Lizenzen verwenden
- Verwenden Sie
doc.save()
regelmäßig, um Datenverluste zu vermeiden.
Fazit
Die Python-API und die Headless-Funktionen von Agisoft Metashape eröffnen Fachleuten und Forschern ein völlig neues Maß an Flexibilität. Von automatisierten Drohnenbild-Pipelines bis hin zur cloudbasierten 3D-Modellgenerierung – die Möglichkeiten sind endlos. Mit ein wenig Skripterstellung können Sie Metashape in eine leistungsstarke, geräuschlose Engine verwandeln, die hinter den Kulissen arbeitet – schneller, wiederholbar und freihändig.