How to Run Agisoft Metashape in Headless Mode with Python Scripting

Wie man Agisoft Metashape im Headless-Modus mit Python-Skripting ausführt

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 oder print(), 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.