Créer un timelapse avec un Raspberry

Le Raspberry Pi de part ça taille est facilement transportable, on peut donc penser à des applications qui peuvent nécessité un traitement relativement important. La création d’un timelapse est une des choses les plus simples et les plus ludiques à réaliser.

Afin de voir l’évolution d’une situation, de travaux, de la poussée d’une plante, on peut se planter devant un point et regarder le changement, malheureusement celui-ci ne sera peut-être pas perceptible. Nous allons utiliser notre framboise pour créer un petit timelapse.

Matériels nécessaires

Voici la liste du minimum requis :

  • un raspberry avec Raspbian d’installer
  • un picamera ou tout autre webcam USB
  • un trépied, lors de mon test, j’ai vu qu’avec le vent, la caméra bouger légèrement ce qui donne l’impression que l’image saute.

Dans cet article, j’utilise cette Picamera.

Configuration du Raspberry avec la Picamera

Tout d’abord, si cela n’a pas été fait, dans un terminal, saisir :

sudo raspi-config

Vous arriverez sur cette page :

raspi-config
raspi-config

Déplacez-vous sur enable camera et activer là.

Eteignez votre Raspberry et connectez la caméra dans son emplacement.

Redémarrer

Je ferai un tutoriel détaillé sur l’utilisation de la Picamera

Installation des paquets nécessaires

Par défaut, il y a dans la distribution Raspbian, tout le nécessaire pour contrôler la Picamera.

Nous allons installer le paquet imagemagick, ouvrir un terminal :

sudo apt-get install imagemagick

Ce paquet est un extrêmement utile pour la manipulation d’image, redimensionnement, filtre, renommage, conversion etc… Voir la documentation sur doc.ubuntu-fr.org.

Pour la création de la vidéo à partir d’une série de photo, en cherchant sur internet, beaucoup utilise mencoder ou ffmpeg, malheureusement, ces deux paquets ne sont plus soutenu bien qu’ils paraissaient puissants. J’ai décidé d’utiliser avconv. Pour l’installer, dans le terminal saisir :

sudo apt-get install libav-tools

Pour plus de détails, vous pouvez visiter ce lien : avconv.

Prise de photo

Il y a plusieurs manières de procéder, une commande existe avec raspistill pour la création d’une série de photo, je n’utilisera pas cette commande afin de pouvoir compresser chaques images prises et ainsi gagner de la place.

Commencer par créer le dossier et vous y placer:

sudo mkdir /home/pi/timelapse
cd /home/pi/timelapse

Je passe par un script en bash, nommer timelapse.sh :

#!/bin/sh
SAVEDIR=/home/pi/timelapse

prise=$(/bin/date +'%s');

index=0;
while [ true ]; do
     if [ $(($(/bin/date +'%s') - $prise)) -ge "10" ]
     then
          prise=$(/bin/date +'%s');
          numero=$(printf "%05d " $index);#Formatage de l'index pour être traité par avconv
          filename="image$numero.jpeg";
          #Utiliser la picamera pour prendre une photo
          /opt/vc/bin/raspistill -hf -vf -w 1280 -h 1024 -t 500 -n -o $SAVEDIR/temp.jpeg;
          #Utiliser une webcam pour prendre une photo
          #/usr/bin/avconv -f video4linux2 -s 1280x1024 -i /dev/video0 -ss 1 -frames 1 $SAVEDIR/temp.jpeg;
          /usr/bin/convert -quality 50 $SAVEDIR/temp.jpeg $SAVEDIR/$filename;
          sudo rm $SAVEDIR/temp.jpeg;
          index=(($index + 1));#Incrémentation du numéro de photo
     fi
done;

J’incrémente le nom de chaque photo de 1.

La condition dans le if me permet de m’assurer que le cliché est bien pris 10 secondes après, je me suis rendu compte, qu’il y avait un léger décalage avec un commande sleep.

Pour le printf

Afin qu’avconv traite les images, il faut que celles-ci soit sous format ima001 – ima002 …. ima102 – ima103 etc, dans notre cas, le nom de l’image sera de la forme image00010.jpeg.

Explication de raspistill

/opt/vc/bin/raspistill -hf -vf -t 500 -n -o $SAVEDIR/temp.jpeg;

Pour expliquer rapidement :

  • les options -hf et -vf permettent une inversion horizontale et verticale (ma Picamera est à l’envers),
  • -t permet de mettre un temps en milliseconde avant de prendre la photo
  • -o permet de choisir le nom de la photo
  • -n enlève la prévisualisation de l’image

Utiliser la webcam

Cette ligne permet d’utiliser la webcam.

/usr/bin/avconv -f video4linux2 -s 1280x1024 -i /dev/video0 -ss 1 -frames 1 $SAVEDIR/temp.jpeg;

Les arguments :

  • -f permet de choisir le format de compression
  • -s pour forcer la résolution
  • -i est l’entrée
  • -ss, le temps pour la prise de vue, ici 1 seconde
  • -frames, le nombre de frame capturée, ici une seule pour une photo
  • enfin le fichier de destination.

Explication de convert

/usr/bin/convert -quality 50 $SAVEDIR/temp.jpeg $SAVEDIR/$filename;

On va modifier la qualité de l’image de 50% et la renommer.

Réalisation de la vidéo

Maintenant que nos photos ont été prises, nous allons convertir tout cela en vidéo, dans un terminal, saisir :

sudo avconv -y -r 10 -i image%5d.jpeg -r 10 -q:v 3 mon_timelapse.avi

Pensez à effacer les photo pour libérer de l’espace :

sudo rm image*.jpeg

En fonction de la version du Raspberry, si il est utilisé, le nombre d’image et leurs caractéristiques, cela peut prendre un certain temps voire même un temps certains.

Désactiver la led de la caméra

Il peut être génant d’avoir le reflet de la led sur une vitre lors de la prise de vue, pour la désactiver, ouvrir avec un éditeur de texte /boot/config.txt et ajouter à la fin :

disable_camera_led=1

Puis redémarrer la bête.

Voir le résultat

Lancer dans un terminal en vous placant dans le dossier contenant les fichier .sh:

bash timelapse.sh

Puis laisser tourner le temps que vous le souhaitez, faite Ctrl+C pour arrêter le script et faite :

sudo avconv -y -r 10 -i image%5d.jpeg -r 10 -q:v 3 mon_timelapse.avi

N’hésitez pas à donner vos remarques ou suggestions.

Une réponse à “Créer un timelapse avec un Raspberry”

Laisser un commentaire