Agisoft Metashape non è solo un’interfaccia grafica per la creazione di modelli 3D, ma anche un potente motore di automazione. Grazie allo scripting Python, gli utenti possono eseguire Metashape in modalità headless (cioè senza interfaccia grafica), ideale per l’elaborazione basata su server, i flussi di lavoro batch e l’integrazione in pipeline cloud. In questo articolo esploriamo come utilizzare l’API Python di Metashape in modalità headless, con esempi e suggerimenti.
Cos’è la modalità Headless in Agisoft Metashape?
La modalità Headless si riferisce all’esecuzione di Metashape tramite riga di comando o script Python, senza lanciare l’interfaccia grafica. Questa modalità è particolarmente utile per i flussi di lavoro automatizzati su server remoti o istanze cloud (ad esempio, AWS EC2, Google Cloud, Azure).
Perché usare lo scripting senza testa?
- Automatizzare i flussi di lavoro ripetitivi (ad es. importazione di foto, allineamento, esportazione)
- Esegui più lavori in modalità batch durante la notte
- Elaborare i dati nel cloud senza bisogno di un’interfaccia grafica
- Integrare la fotogrammetria nelle pipeline aziendali
Requisiti
- Agisoft Metashape Professional installato (1.8 o più recente)
- Licenza valida (node-locked o floating)
- Python 3.x (viene fornito con Metashape)
- Accesso alla CLI (Prompt dei comandi, Terminale, SSH)
Eseguire uno script Python senza testa
Metashape fornisce uno strumento a riga di comando che può essere utilizzato per eseguire script Python:
metashape.sh -r script.py
Su Windows, usa:
metashape.exe -r C:\path\to\script.py
Puoi anche passare degli argomenti allo script:
metashape.exe -r script.py --project_folder "C:\data\site1"
Esempio di script senza testa
Quello che segue è un semplice script Python che carica le immagini, le allinea e costruisce una nuvola di punti rada.
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)
Fasi tipiche del flusso di lavoro in Python
- Importazione di foto
- Allinea le telecamere
- Ottimizzare l’allineamento
- Costruisci una nuvola densa
- Costruisci DEM
- Costruisci un ortomosaico o una mesh
- Esportazione dei risultati
Dove trovare il riferimento all’API Python
L’API ufficiale di Python è documentata qui: https://agisoft.freshdesk.com. Include le descrizioni di tutte le classi, i metodi e i parametri per l’automazione avanzata.
Esempio: Script di automazione completo
# 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")
Opzioni avanzate
- Esportazione di ortomosaici come GeoTIFF
- Importare GCP da CSV
- Elaborazione in batch di più cartelle
- Distribuzione basata sul cloud (Docker, EC2, sincronizzazione remota)
Suggerimenti per l’esecuzione senza testa
- Usa
sys.argv
per passare dinamicamente i percorsi dei progetti o delle immagini - Includere sempre la gestione degli errori negli script per le esecuzioni non presidiate
- Registra i progressi in un file (tramite
logging
oprint()
reindirizzato al log) - Verifica la disponibilità delle licenze quando si utilizzano le licenze flottanti
- Utilizza periodicamente
doc.save()
per evitare la perdita di dati
Conclusione
L’API Python e le funzionalità headless di Agisoft Metashape aprono un nuovo livello di flessibilità per professionisti e ricercatori. Dalle pipeline automatizzate di immagini di droni alla generazione di modelli 3D basati su cloud, le possibilità sono infinite. Con un po’ di scripting, puoi trasformare Metashape in un potente motore silenzioso che funziona dietro le quinte: più veloce, ripetibile e a mani libere.