Differenze tra le versioni di "Timelapse"

Da Lecco.
Riga 73: Riga 73:
  
 
== mycapture.sh ==
 
== mycapture.sh ==
 +
 +
<pre><nowiki>
 +
#!/bin/bash
 +
#
 +
 +
case "$1" in
 +
 +
start)
 +
# Avvia il ciclo perenne di cattura
 +
while true do
 +
 +
# Controlla che Capture sia attivo
 +
ps aux | grep capture > /dev/null
 +
 +
if [ $? ]; then
 +
 +
# Cattura l'immagine
 +
capture 'capture /tmp/imagetemp.jpg'
 +
 +
# Ricava data e ora di sistema assegnandoli a una variabile
 +
date = $(/bin/date '+%d/%m/%Y %H:%M:%S')
 +
 +
# Aggiunge data e ora all'immagine
 +
convert /tmp/imagetemp.jpg -gravity southeast -pointsize 20 -stroke black -strokewidth 4 \
 +
  -annotate 0 "${text}" -stroke white -strokewidth 1 -fill white -annotate 0 "${text}" \
 +
  /tmp/imageconv.jpg
 +
 +
# Carica l'immagine sul server remoto
 +
ncftpput -u user -p password -C ftp /tmp/imageconv.jpg /dest/remota
 +
 +
# Attesa tra uno scatto e l'altro
 +
sleep 240
 +
 +
else
 +
 +
# Se capture non è attivo lo lancia utilizzando lo script personalizzato
 +
capture-start.sh start
 +
 +
fi
 +
 +
done
 +
;;
 +
 +
stop)
 +
# Termina qualunque istanza avviata in precedenza
 +
killall mycapture.sh
 +
;;
 +
 +
*)
 +
echo "Usage: $0 {start|stop}" >&2
 +
exit 1
 +
;;
 +
 +
esac
 +
</nowiki></pre>
  
 
== Ringraziamenti ==
 
== Ringraziamenti ==

Versione delle 20:25, 5 feb 2009

Ideato da: Gigiv
Licenza: GPL
Download:

Introduzione

Questi due script servono ad utilizzare una semplice fotocamera digitale per l'acquisizione ciclica di scatti, applicare data e ora allo scatto acquisito ed inviarlo ad un server remoto tramite FTP

Requisiti

Per la realizzazione del tutto è stato usato:

Hardware

  • PC dotato di porta USB equipaggiato con Ubuntu 7.04 Server (la potenza della macchina è ininfluente. Se riesce a girare Ubuntu, riuscirà a girare anche lo script)
  • Fotocamera Canon Powershot A400/A520 (potete vedere le fotocamere supportate sul sito del software di cattura citato più avanti)

Software

Software di cattura degli scatti da fotocamere Canon. In alternativa potete usare gPhoto2 che supporta anche Nikon e Olympus.
Tools di modifica dinamica delle immagini. Utilizzato per l'aggiunta di data e ora all'immagine.
Client FTP per l'uppload della foto sul server remoto.
Librerie di comunicazione con la fotocamera. Necessarie per il funzionamento di Capture.
Librerie per l'accesso agli USB Device. Necessarie per il funzionamento di Capture.

Capture

Capture è un ottimo software di controllo di fotocamere Canon.
Il funzionamento è gestito tramite linea di comando con un ampia gamma di opzioni.
Per il lancio e lo stop del demone si utilizza rispettivamente

~$ capture start
~$ capture quit

Per il passaggio delle opzioni al demone si devono includere le opzioni con i rispettivi valori tra apici singoli.
Ad esempio per zommare si dovrà usare

~$ capture 'zoom 5'

capture-start.sh

#/bin/bash
#

case "$1" in

	start)
		# Avvia Capture
		capture start

		# Setta la risoluzione dello scatto a 640x480
		capture 'size small'

		# Setta lo zoom al massimo dell'ottica
		capture 'zoom 6'
		;;

	stop)
		# Ferma Capture
		capture quit
		;;

	*)
		echo "Usage: $0 {start|stop}" >&2
		exit 1
		;;

esac

mycapture.sh

#!/bin/bash
#

case "$1" in

	start)
		# Avvia il ciclo perenne di cattura
		while true do

			# Controlla che Capture sia attivo
			ps aux | grep capture > /dev/null

			if [ $? ]; then

				# Cattura l'immagine
				capture 'capture /tmp/imagetemp.jpg'

				# Ricava data e ora di sistema assegnandoli a una variabile
				date = $(/bin/date '+%d/%m/%Y %H:%M:%S')

				# Aggiunge data e ora all'immagine
				convert /tmp/imagetemp.jpg -gravity southeast -pointsize 20 -stroke black -strokewidth 4 \
				  -annotate 0 "${text}" -stroke white -strokewidth 1 -fill white -annotate 0 "${text}" \
				  /tmp/imageconv.jpg

				# Carica l'immagine sul server remoto
				ncftpput -u user -p password -C ftp /tmp/imageconv.jpg /dest/remota

				# Attesa tra uno scatto e l'altro
				sleep 240

			else 

				# Se capture non è attivo lo lancia utilizzando lo script personalizzato
				capture-start.sh start

			fi

		done
		;;

	stop)
		# Termina qualunque istanza avviata in precedenza
		killall mycapture.sh
		;;

	*)
		echo "Usage: $0 {start|stop}" >&2
		exit 1
		;;

esac

Ringraziamenti