Script video 360°: installazione e domande frequenti
Queste sono le istruzioni degli script del tutorial Video 360° e drone RTK: la scala non si sceglie, si misura, che mandiamo su richiesta. Le teniamo qui, e non nel pacchetto, così le aggiorniamo quando qualcuno ci segnala un problema nuovo.
Cosa contiene il pacchetto
workflow360.py: gira con Python, comandiextract(passo 1) efit(passo 3);1_ms_pano360_align.py: gira dentro Metashape (passo 2);requirements.txt: le librerie Python da installare;LICENZA.txt: la licenza d’uso che avete accettato con la richiesta;LEGGIMI.txt: il rimando a questa pagina.
Requisiti
| Cosa | Dettaglio |
|---|---|
| Python | 3.9 o successivo, a 64 bit |
| Librerie | numpy, scipy, laspy, pye57 (elencate in requirements.txt) |
| Agisoft Metashape | con gli script Python (edizione Professional), per il passo 2 |
| Rilievo drone | progetto Metashape con il chunk del drone già allineato e georeferenziato, e la sua nuvola densa esportata in LAS |
| Video 360° | file E57 con le foto 360° equirettangolari e la nuvola di punti, come quelli esportati da CupixVista |
| Sistema di coordinate | proiettato, in metri, uguale per il chunk Metashape e per il LAS del drone |
Installazione
Conviene un ambiente Python dedicato, così le librerie non si mescolano con altri programmi. Dalla cartella del pacchetto:
python -m venv video360
video360\Scripts\activate (Windows)
source video360/bin/activate (macOS e Linux)
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python workflow360.py --help
L’ultimo comando deve mostrare i due sottocomandi extract e fit. Lo script di Metashape non si installa: si apre da Metashape.
Uso in tre passi
1. Estrarre le foto 360° dall’E57. Crea una cartella con una foto JPEG per ogni posizione (pano_000_….jpg) e il file pano_poses.json con le pose originali.
python workflow360.py extract --e57 RILIEVO.e57 --out CARTELLA_FOTO360
2. Allineare le foto 360° al drone in Metashape. Aprite il progetto, selezionate il chunk del drone già allineato e georeferenziato, poi Tools → Run Script e scegliete 1_ms_pano360_align.py. Se PANO_DIR è vuoto, lo script chiede la cartella delle foto 360°. Lavora su una copia del chunk (drone+pano360): l’originale resta intatto. Alla fine scrive pano_aligned_positions.csv accanto al progetto.
3. Scala, posizione e nuvola nel sistema del drone.
python workflow360.py fit --e57 RILIEVO.e57 \
--poses CARTELLA_FOTO360/pano_poses.json \
--panos-ms pano_aligned_positions.csv \
--drone-las NUVOLA_DRONE.las \
--out-las NUVOLA_360_NEL_SISTEMA_DRONE.las
Su Windows, in PowerShell, il comando va su una riga sola oppure si spezza con l’accento grave (`) al posto di \. Il comando scrive la nuvola 360 in LAS e, accanto, un file .json con scala, rotazione e traslazione applicate.
Cosa controllare
Lo script stampa tre numeri: lo scarto sulle posizioni delle foto 360° (passo 1), la distanza tra pareti corrispondenti nelle due nuvole (passo 2) e la distanza mediana tra nuvola 360 e drone (passo 3). Come leggerli, con i valori del nostro rilievo di prova, è nel tutorial. La scala va comunque confermata con le vostre misure a terra, come spiegato nella sezione «Verificare con le proprie misure».
Domande frequenti
pip non riesce a installare pye57
pye57 si installa da pacchetti già compilati, disponibili per le versioni di Python più diffuse a 64 bit. Se pip prova a compilarlo e si ferma con un errore, create l’ambiente con una versione di Python più recente a 64 bit, aggiornate pip e riprovate.
«No module named Metashape», oppure non trovo Run Script
1_ms_pano360_align.py non si lancia con python: si apre da Metashape con Tools → Run Script. Gli script Python sono disponibili nell’edizione Professional di Metashape.
Lo script ha copiato il chunk sbagliato
Lo script copia il chunk selezionato in quel momento. Cancellate la copia drone+pano360, selezionate il chunk del drone e rilanciatelo: il chunk originale non viene mai modificato.
Nella cartella delle foto 360° ci sono anche altri file
Lo script aggiunge a Metashape tutti i file .jpg della cartella: lasciate solo quelli creati da extract. Non rinominateli: il passo 3 riconosce ogni foto dal suo numero (pano_NNN).
Si allineano poche foto 360°
È normale che alcune non si allineino, soprattutto negli interni poveri di dettagli: servono soprattutto le foto esterne e quelle di passaggio tra dentro e fuori. Il numero cambia anche tra due esecuzioni con gli stessi dati (90, 91 e 88 su 100 nelle nostre prove). Nello script potete alzare KEYPOINT_LIMIT e TIEPOINT_LIMIT, a costo di più tempo, oppure abbassarli per andare più veloci.
L’estrazione si ferma con un errore sul file E57
Il file E57 deve contenere le foto 360° come immagini sferiche, oltre alla nuvola. Un E57 con la sola nuvola di punti non basta. Gli E57 esportati da CupixVista le contengono.
Il mio E57 contiene più scansioni
Il passo 3 legge la nuvola dalla prima scansione del file. Se il vostro E57 ne ha più d’una, scriveteci: vediamo insieme come procedere.
Compare «ATTENZIONE: nessuna coppia di piani con base > 5 m»
Lo script non ha trovato due pareti parallele, a più di 5 m l’una dall’altra, presenti in tutte e due le nuvole. La scala resta quella stimata dalle sole posizioni delle foto 360°: serve un’altra misura di controllo, per esempio con il metro laser, e un’eventuale correzione dichiarata.
Lo scarto del passo 1 è molto più grande di 13 cm
Indica che l’allineamento delle foto 360° in Metashape è debole. Controllate che ci siano foto esterne e di passaggio, e rifate il passo 2 prima di andare avanti.
La nuvola 360 finisce lontana o con una scala assurda
Quasi sempre il chunk di Metashape e il LAS del drone non sono nello stesso sistema di coordinate, oppure il sistema non è proiettato in metri (per esempio coordinate geografiche in gradi). Esportate il LAS nello stesso sistema proiettato del chunk.
Il passo 3 è lento o finisce la memoria
Aumentate --step (predefinito 4), per esempio a 8: il passo 3 usa un punto ogni N della nuvola del drone per i controlli, e la nuvola 360 scritta resta completa. L’E57 viene letto tutto in memoria: con file molto grandi serve un computer con molta RAM.
Il mio problema non è in questo elenco
Scriveteci descrivendo il problema e incollando quello che stampano gli script: lo aggiungiamo qui, con la soluzione.
Licenza
Gli script si usano secondo la licenza d’uso accettata con la richiesta: uso professionale anche per conto di terzi, niente redistribuzione, citazione della fonte nei risultati pubblicati.
