How to Run Agisoft Metashape in Headless Mode with Python Scripting

Comment exécuter Agisoft Metashape en mode sans tête avec des scripts Python

Agisoft Metashape n’est pas seulement une interface graphique pour la création de modèles 3D, c’est aussi un puissant moteur d’automatisation. Grâce aux scripts Python, les utilisateurs peuvent exécuter Metashape en mode headless (c’est-à-dire sans interface graphique), ce qui est idéal pour le traitement sur serveur, les flux de travail par lots et l’intégration dans des pipelines en nuage. Dans cet article, nous explorons comment utiliser l’API Python de Metashape en mode headless, avec des exemples et des conseils.

Qu’est-ce que le mode sans tête dans Agisoft Metashape ?

Le mode Headless fait référence à l’exécution de Metashape via une ligne de commande ou des scripts Python, sans lancer l’interface utilisateur graphique. Ce mode est particulièrement utile pour les flux de travail automatisés sur des serveurs distants ou des instances en nuage (par exemple, AWS EC2, Google Cloud, Azure).

Pourquoi utiliser des scripts sans tête ?

  • Automatiser les flux de travail répétitifs (par exemple, importation de photos, alignement, exportation)
  • Exécutez plusieurs tâches en mode batch pendant la nuit
  • Traitez les données dans le nuage sans avoir besoin d’une interface graphique
  • Intégrer la photogrammétrie dans les pipelines de l’entreprise

Exigences

  • Agisoft Metashape Professional installé (1.8 ou plus récent)
  • Licence valide (verrouillée ou flottante)
  • Python 3.x (livré avec Metashape)
  • Accès à la CLI (Invite de commande, Terminal, SSH)

Exécuter un script Python sans tête

Metashape fournit un outil de ligne de commande qui peut être utilisé pour exécuter des scripts Python :

metashape.sh -r script.py

Sous Windows, utilisez :

metashape.exe -r C:\path\to\script.py

Vous pouvez également transmettre des arguments au script :

metashape.exe -r script.py --project_folder "C:\data\site1"

Exemple de script sans tête

Voici un simple script Python qui charge les images, les aligne et construit un nuage de points clairsemé.

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)

Étapes typiques d’un flux de travail en Python

  • Importer des photos
  • Aligner les caméras
  • Optimiser l’alignement
  • Construire un nuage dense
  • Construire le DEM
  • Construire une orthomosaïque ou un maillage
  • Exporter les résultats

Où trouver la référence de l’API Python

L’API officielle de Python est documentée ici : https://agisoft.freshdesk.com. Elle comprend des descriptions de toutes les classes, méthodes et paramètres pour une automatisation avancée.

Exemple : Script d’automatisation complet

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

Options avancées

  • Exportation d’orthomosaïques sous forme de GeoTIFFs
  • Importer des GCP à partir d’un fichier CSV
  • Traitement par lots de plusieurs dossiers
  • Déploiement dans le nuage (Docker, EC2, synchronisation à distance)

Conseils pour une exécution sans tête

  • Utilisez sys.argv pour transmettre dynamiquement des chemins d’accès à des projets ou à des images.
  • Incluez toujours une gestion des erreurs dans les scripts pour les exécutions sans surveillance.
  • Enregistrer la progression dans un fichier (via logging ou print() redirigé vers le journal)
  • Vérifier la disponibilité des licences lors de l’utilisation de licences flottantes
  • Utilisez périodiquement le site doc.save() pour éviter la perte de données

Conclusion

L’API Python d’Agisoft Metashape et les capacités headless ouvrent un tout nouveau niveau de flexibilité pour les professionnels et les chercheurs. Des pipelines d’images de drones automatisés à la génération de modèles 3D basés sur le cloud, les possibilités sont infinies. Avec un peu de script, vous pouvez transformer Metashape en un moteur puissant et silencieux fonctionnant dans les coulisses – plus rapide, reproductible et sans intervention.