Fotografia: “time lapse” con gPhoto2
Attenzione
Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.
Oggi mi sono posto il problema del “time lapse”, una particolare tecnica fotografica che tramite la successione degli scatti permette la creazione di piccole animazioni. Per avere un’idea di cosa sia il time lapse, vi rimando ai video spettacolari facilmente reperibili su youtube, o meglio a quelli dedicati di questa pagina.
Per dei buoni time lapse è necessario automatizzare il processo di scatto, in pratica meno cose sono affidate all’abilità personale e meglio sarà il risultato finale.
Cosa serve per un time lapse tradizionale:
- un cavalletto per la macchina fotografica (o un appoggio fisso, in modo di non muoverla),
- un sistema che mi permetta di scattare senza toccare la fotocamera (es. telecomando),
- una buona dose di attenzione / precisione per scattare a intervalli regolari,
- del tempo libero (almeno un’oretta per un video breve),
- un sacco di voglia.
Mentre per un time lapse automatizzato serve molto meno “roba”:
- un cavalletto per la macchina fotografica (o un appoggio fisso),
- un cavo per collegare la macchina fotografica al computer,
- “gPhoto2” ed (eventualmente) “cron”,
- ffmpeg per codificare gli scatti in un video.
Nell’ultimo tutorial si è parlato di come “gPhoto2” ci permetta di scattare fotografie remotamente tramite il semplice collegamento USB della macchina fotografica al pc. In passato mi sono chiesto a cosa potesse servire fare fotografie da remoto, il mirror della reflex è facilmente udibile e in caso di videosorveglianza metterebbe in allarme i ladri (che probabilmente ruberebbero proprio la reflex), ed ecco l’appilcazione pratica, o una delle possibili: il time lapse.
Nel mio esperimento utilizzerò una Canon EOS 20D. Rimando alla documentazione di gPhoto2 per l’elenco completo delle fotocamere testate e compatibili.
Per prima cosa posizioniamo la fotocamera in modo da riprendere qualcosa di interessante: una scena che cambia aspetto con il lento passare del tempo. Può esserlo, un tramonto, una strada trafficata in notturna, un concerto o un evento. La fotocamera va appoggiata / assicurata a qualcosa di solido, come un muretto, un davanzale, o meglio ancora un cavalletto apposito in modo che non si muova.
Colleghiamo la nostra reflex al PC con il cavetto USB. A questo punto le distribuzioni più recenti useranno gPhoto2 per montare direttamente la fotocamera e permetterci di scaricare le foto tramite il file-browser predefinito. Per abilitare gli scatti automatici però sarà indispensabile che la fotocamera non sia montata, il modo più semplice in Gnome è aprire file manager, cliccare con il tasto destro nella colonna di sinistra sulla risorsa corrispondente alla macchina fotografica e selezionare “Espelli” oppure “Rimuovi unità in sicurezza”.
Controlliamo che gPhoto2 e la macchina fotografica riescano a “comunicare”. Lanciamo il comando per scattare una foto “gphoto2 –capture-image”. Se lo shutter scatta e la foto viene salvata nella memoria interna possiamo andare allo step successivo.
Come già descritto nel precedente articolo gPhoto2 è un software (oltre che divertente) pieno di funzioni, si corre il rischio di “perdere” molto tempo a giocarci. Per fare in modo che la macchina scatti foto di continuo, impostare un intervallo in secondi e determinare il numero totale di scatti il comando è questo: ” gphoto2 -I <#secondi> -F <#scatti> --capture-image --get-all-files
“.
Se c’è qualche problema e la macchina fotografica non viene riconosciuta dopo qualche scatto, vi rimando alla sezione “Problemi” a fondo articolo. A questo punto abbiamo una serie di scatti in ordine crescente, e vogliamo codificare un video. La cosa più semplice è usare ffmpeg, un programma a riga di comando per la codifica video. Fortunatamente ffmpeg è automatico e allinea le immagini in ordine crescente, purtroppo se trova un “buco” fra un file e l’altro non salta alla successiva, ma interrompe la codifica (es. manca la foto 36 fra la foto 35 e la 37). Per questo dobbiamo rinominare tutti i file in ordine crescente in modo che non ci siano foto mancanti. Il modo più veloce è ancora la shell. Il comando è questo: ” ls *.jpg | nl -nrz -w5 | while read newname oldname; do mv "$oldname" $newname.jpg; done
“. Crea i file con nomi da 5 caratteri, a numeri crescenti.
E ora finalmente usiamo ffmpeg: ” ffmpeg -i '%05d.jpg' -target pal-dvd -y video.mpg
“.
Per i time lapse più complessi la fotocamera viene fatta slittare su un binario ad ogni scatto, in modo che nella composizione finale si abbia l’impressione di una scena ripresa “a mano”, dal vivo.
Problemi
Non ho un riscontro oggettivo, ma dalla mia esperienza personale sembra che gphoto2 non piaccia molto alla mia macchina fotografica. Il problema non si verifica sempre, si tratta del led rosso di funzionamento della macchina fotografica. Quando viene impostato un intervallo fra due scatti il led continua a lampeggiare a intermittenza. Questo significa che gphoto2 sta lavorando, e aspetta il momento di scattare, ma dopo qualche scatto ho notato che la macchina fotografica non viene più riconosciuta. Ho risolto il problema con Cron, un programmino a riga di comando già presente nelle distribuzioni Linux.
Cron è un semplice programma il cui compito è eseguire dei programmi ad intervalli determinati. Il file di configurazione è “crontab”, per modificarlo lanciamo da terminale il comando “crontab -e” e il mio si presenta più o meno così:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
* * * * * /home/joe/script/time_lapse.sh
* * * * * sleep 15; /home/joe/script/time_lapse.sh
* * * * * sleep 30; /home/joe/script/time_lapse.sh
* * * * * sleep 45; /home/joe/script/time_lapse.sh
Le righe interessanti sono le ultime quattro. Con questa configurazione le ultime quattro righe lanciano lo script “/home/joe/script/time_lapse.sh” ogni minuto. La prima al minuto preciso, la seconda 15 secondi dopo, la terza 30 secondi dopo e la quarta con un ritardo di 45 secondi. In questo modo scatto le foto distanziate di 15 secondi l’una dall’altra (più il tempo di scatto).
Per avere un’idea generale del funzionamento di cron, rimando a Wikipedia.
Qualche riferimento
http://gerlos.altervista.org/fotografia
http://cholla.mmto.org/photography/gphoto2/test_244.html
http://usenet.it.rooar.com/showthread.php?t=6723623
3 commenti
Alessandro · 22 Giugno 2014 alle 6:29 PM
Ciao complimenti per i tutorial!!! Vorrei chiederti un suggerimento: vorrei fare riprese per un cantiere che durerà un anno circa, e ho dubbi su quante img scattare e sull’intervallo…..cosa mi consigli?
Giovanni Mauri · 25 Settembre 2014 alle 3:26 PM
Ciao Alessandro,
mi sono perso un po’ di commenti per la strada in questi mesi. Scusa se rispondo con questo ritardo.
Per un time lapse di un cantiere io valuterei il cantiere prima di tutto e quale sarà il risultato del fabbricato finito (visto che i lavori dureranno un anno). Se ti costruiscono un grattacielo davanti a casa ad esempio non inquadrerei il solo perimetro dei lavori iniziali, ma userei una lente grandangolare per riprenderlo anche in altezza.
Per quanto riguarda gli scatti, invece, ne farei uno ogni ora collegando un crepuscolare al pulsante di scatto (se non lavorano di notte). Devi iniziare a scattare poco prima che gli operai entrino in cantiere e finire quando tutti se ne sono andati (se lavorano anche di notte scatterei pure di notte).
Facci vedere il tuo lavoro quando sarà ultimato!
DaAsFlickred · 11 Luglio 2012 alle 7:11 PM
Ottimo timelapse e bel tutorial joe!! 🙂