Afin de photographier l'évolution d'une fresque, je me demandais s'il n'était pas possible de commander par usb mon appareil photo comme sur les soft canon sous windows.
Gphoto sous linux permet de faire un multitude d'opérations tel que prendre une photo, une vidéo et les transférer. Vous trouverez sur leur site une liste des appareils supportés (obtenable par un --list-cameras). (Attention si vous avec un montage automatique de l'appareil photo, il vous faudra le démonter pour utiliser gphoto).
Pour identifier votre appareil vous pouvez utiliser l'option --auto-detect, gphoto gère l'usb et les ports série. Il suffira de précisez quel appareil vous utilisez avec les options --camera= et --port=usb:Bus:Device. Exemple : gphoto2 --camera="Canon PowerShot A520 (PTP mode)" --port="usb:001:004" --shell (gphoto nécessite les droits administrateur sous debian si vous voulez éviter cela allez voir ici).
Vous pouvez également récupérer les infos Bus et Device à l'aide de lsusb. L'option --shell permet de lancer un shell pour utiliser gphoto et ses commandes directement.
Pour capturer une photo il faut utiliser l'option --capture-image, par défaut la photo est stockée dans l'appareil photo (ram ou carte mémoire). Si vous voulez directement récupérer la photo utilisez la commande --capture-image-and-download.
Si vous voulez savoir quelles sont toutes les configuration possible de votre appareil photo vous pouvez utiliser ce petit script (que j'ai nommé RECUP_CONFIG.sh dans l'archive jointe) :
Vous pourrez voir toutes les configurations possibles dans le fichier options_appareil.txt. Pour modifier une configuration de l'appareil on utilise l'option --set-config conf=valeur. "conf" est soit le chemin soit le label. (Attention dans mon cas avec le PowerShot A520, il fallait que l'appareil photo soit déjà initialisé pour avoir accès aux configuration relatives à la photo prise, ie qu'il ait l'objectif ouvert, la seule solution que j'ai trouvé est de faire un "gphoto2 --capture image" auparavant). Voici le petit script utilisé pour photographier la fresque avec un PowerShot A520 :
Pour identifier votre appareil vous pouvez utiliser l'option --auto-detect, gphoto gère l'usb et les ports série. Il suffira de précisez quel appareil vous utilisez avec les options --camera= et --port=usb:Bus:Device. Exemple :
Vous pouvez également récupérer les infos Bus et Device à l'aide de lsusb. L'option --shell permet de lancer un shell pour utiliser gphoto et ses commandes directement.
Pour capturer une photo il faut utiliser l'option --capture-image, par défaut la photo est stockée dans l'appareil photo (ram ou carte mémoire). Si vous voulez directement récupérer la photo utilisez la commande --capture-image-and-download.
Si vous voulez savoir quelles sont toutes les configuration possible de votre appareil photo vous pouvez utiliser ce petit script (que j'ai nommé RECUP_CONFIG.sh dans l'archive jointe) :
for i in `gphoto2 --list-config`;
do echo $i >> options_appareil.txt gphoto2 --get-config $i >> options_appareil.txt
done
Vous pourrez voir toutes les configurations possibles dans le fichier options_appareil.txt. Pour modifier une configuration de l'appareil on utilise l'option --set-config conf=valeur. "conf" est soit le chemin soit le label. (Attention dans mon cas avec le PowerShot A520, il fallait que l'appareil photo soit déjà initialisé pour avoir accès aux configuration relatives à la photo prise, ie qu'il ait l'objectif ouvert, la seule solution que j'ai trouvé est de faire un "gphoto2 --capture image" auparavant). Voici le petit script utilisé pour photographier la fresque avec un PowerShot A520 :
#!/bin/bash
##################################################
# Script de capture photo pour powershot A520 #
##################################################
#NB : gphoto2 détecte automatiquement l'appareil photo,
# pour éviter les conflits l'appareil est précisé.
###Configuration###
CAMERA="Canon PowerShot A520 (PTP mode)"
ID="04a9:30c1" #vendeur et ID du produit
PATHTOSCRIPT="/home/$USER/RMLL_Photo_script"
TIME=30 #à voir : --interval --count
PICTFOLD="Path/To/Capture/"
FILENAME="date +%Y-%m-%d_%H-%M-%S"
#FILENAME="+%Y-%m-%d_%Hh%M" pour la date de l'appareil photo
#(synchronisable avec l'option --set-config "Set camera time to PC time")
###Détection du port usb###
LSUSB=`lsusb -d $ID`
BUS=`echo $LSUSB | cut -c 5-7`
DEVICE=`echo $LSUSB | cut -c 16-18`
###Prog###
if [ ! -d $PICTFOLD ]; then
mkdir $PICTFOLD
fi
cd $PICTFOLD
while true; do
old_IFS=$IFS # sauvegarde du séparateur de champ
IFS=$'\n' # nouveau séparateur de champ, le caractère fin de ligne
#toutes les lignes non commentées
for ligne in $(cat $PATHTOSCRIPT/current_options | grep --invert-match '#'); do
if [ $ligne ]; then #si elles ne sont pas vide
gphoto2 --port "usb:$BUS,$DEVICE" --camera "$CAMERA" --set-config $ligne
fi
done
IFS=$old_IFS # rétablissement du séparateur de champ par défaut
gphoto2 --port "usb:$BUS,$DEVICE" --camera "$CAMERA" \
--capture-image-and-download --filename `$FILENAME`
#ça prend 30 sec sur mon A520
sleep $TIME
done
Avec le fichier de configuration current_options qui permet de changer les configurations pendant que le script est lancé :
L'appareil sauvegarde la valeur attribué à la config en ram. Si une ligne contient un commentaire, elle ne sera pas prise en compte Si l'appareil n'est pas initialisé (pour l'instant je sais seulement le faire avec --capture-image) les options relative à la photo sont inutilisables. Chaque config est à séparer par un retour à la ligne.
Avec un label : Mode flash=2 Avec le chemin : /main/capturesettings/canonflashmode=2
Pour plus d'infos et d'options su gphoto allez voir le man :) Ci joint les sources :).
Aucun commentaire:
Enregistrer un commentaire