Outils pour utilisateurs

Outils du site


diy:projets:stopmotion

Introduction

Le stop-motion est une technique d'animation consistant à créer l'illusion de mouvement en prenant une photo d'une scène, la modifiant, puis en répétant l'opération.
On va ici créer un script qui prend une série de photos depuis un Raspberry Pi. On prendra une photo à chaque fois que l'utilisateur appuie sur la touche c, et on s'arrête lorsqu'il presse la touche q.

Explication

Le principe est très similaire à celui du timelapse, à cela près qu'au lieu de prendre des photos automatiquement, on devra attendre que l'utilisateur presse une touche.

On va ouvrir la connexion ssh, prendre les photos, les importer, les mettre au format vidéo avec mencoder, puis effacer les fichiers temporaire :

#!/bin/bash
 
DATE=$(date +"%Y-%m-%d_%H%M")
 
echo "Connecting..."
# Connecting to remote raspberry and running Startup script.
#cat Startup2.sh | ssh pi@10.3.141.126 sh
ssh pi@10.3.141.126 "$(cat Startup2.sh)"
 
echo "Importing pictures..."
rsync -avz --ignore-existing --remove-source-files pi@10.3.141.126:~/temp_stopmotion ~/BE
# rsync -av -delete
 
 
# Stitching them together
echo "Building video file..."
# Listing all existing pictures
ls ~/BE/temp_stopmotion/*.jpg > stills.txt
mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o stopmotion_$DATE.avi -mf type=jpeg:fps=24 mf://@stills.txt
 
echo "Done. Cleaning up..."
# Removing temp files and directories
rm -R temp_stopmotion
rm stills.txt
ssh pi@10.3.141.126 'rmdir temp_stopmotion'

La différence principale vient du script Startup2.sh exécuté par la commande ssh. On attend la pression d'une touche. S'il s'agit de c, on prend une photo. S'il s'agit de q, on s'arrête, sinon, on boucle.

#!/bin/bash
 
i=0
mkdir temp_stopmotion
 
echo "Starting Stop-Motion..."
until [[ "$key" == "q" ]]
do
    read -n 1 -d '' key
    if [[ "$key" == "c" ]]; then
        i_string=$( printf '%04d' $i )
        raspistill -t 100 -vf -hf -o temp_stopmotion/smotion_pic$i_string.jpg
        echo "Picture $i_string taken."
        ((i++))
    fi
done
diy/projets/stopmotion.txt · Dernière modification : 2018/05/29 12:26 de ycaminade