Inicio | Software y utilidades | gPhoto2: control remoto de cámara open source

gPhoto2: control remoto de cámara open source

Domingo, 08 de Mayo de 2016 23:18

GPhoto2 logoUno de los descubrimientos de software Open Source más divertidos que he encontrado últimamente es la herramienta gPhoto2 para control remoto de cámaras DSLRs, o como suele decirse en términos anglosajones “Tethered” desde sistemas basados en Unix, o sea, Linux o Mac.



gPhoto es lanzado en su versión estable a finales de 2015, aunque lleva en desarrollo desde el 2011 , y esta fundamentado en el protocolo PTP o Picture Transfer Protocol, propuesto en 2008 como estándar bajo la denominación “ISO 15740:2008 Photography — Electronic still picture imaging — Picture transfer protocol (PTP) for digital still photography devices”.


El PTP es un protocolo adoptado por los principales fabricantes de cámaras, con el fin de permitir el control y transferencia de imágenes de forma remota. gPhoto con su librería libgphoto2 es la apuesta más consistente en materia de control remoto de cámaras DSLR, sin tener que acudir a herramientas comerciales o a los propios SDKs de cada fabricante.

Por ahora solo he utilizado dicha herramienta desde MacOsX, la cual es muy fácil de instalar desde Ports, con un simple:

sudo port install gphoto2

O en Linux

sudo apt-get install gphoto2

En Mac OsX es muy probable que exista alguna aplicación que capture la conexión con tu cámara una vez conecta, por eso es recomendable, antes de comenzar a trabajar con gPhoto hacer un:

killall PTPCamera

Uno de los primeros comandos que podemos lanzar para tantear nuestra conexión es:

Lanzar la lista de cámaras conectadas y puerto:

gphoto2 --auto-detect

O que nos vuelque toda la información de la cámara (modelo, numero de serie, almacenaimento, etc...):

gphoto2 --summary

Pero quizás el comando más interesante para conocer las capacidades y estado particular de cada función de la cámara es:

gphoto2 --auto-detect --list-config

Esto vuelca

/main/capturesettings/minimumshutterspeed
/main/capturesettings/isoautohilimit
/main/capturesettings/dlighting
/main/capturesettings/highisonr
/main/capturesettings/imagequality
/main/capturesettings/shootingspeed
/main/capturesettings/moviequality
/main/capturesettings/flashshutterspeed
/main/capturesettings/longexpnr
/main/capturesettings/assistlight
/main/capturesettings/exposurecompensation
/main/capturesettings/exposurecompensation2
/main/capturesettings/flashmode
.... etc

Si hacemos, por ejemplo un:

gphoto2 --get-config /main/capturesettings/f-number

Obtenemos la lista de aperturas de diafragma disponibles, ya sea por índice “f-number” o por valor “f-number2”.

Choice: 0 f/1,8
Choice: 1 f/2
Choice: 2 f/2,2
Choice: 3 f/2,5


Si a continuación, queremos fijar la apertura, haremos un:

gphoto2 --set-config-index /main/capturesettings/f-number=2
gphoto2 --set-config-index /main/capturesettings/f-number2=f/2.8

De la misma forma, si queremos conocer las velocidades de obturación disonibles y fijarla en la cámara, haremos un:

gphoto2 --get-config /main/capturesettings/shutterspeed2
gphoto2 --set-config-index /main/capturesettings/shutterspeed2=1/125

Para conocer y ajustar la sensibilidad (solo podemos introducir el índice, no el valor):

gphoto2 --get-config /main/imgsettings/iso
gphoto2 --set-config-index  /main/imgsettings/iso=8

Y finalmente para disparar:

Si queremos disparar y descargar, fijando el nombre de archivo:

gphoto2 --capture-image-and-download --filename JP_%H%M%S.%C

Y si queremos almacenarla en la tarjeta de la cámara:

 gphoto2 --set-config  capturetarget=1
 gphoto2 --capture-image

Aunque puede parecer un poco lioso, es fácil programar un script de bash que nos ayude a fijar la exposición y disparar:

#!/bin/bash
killall PTPCamera
#gphoto2 --set-config-index /main/imgsettings/iso=8
gphoto2 --set-config-value /main/capturesettings/f-number=f/$1
gphoto2 --set-config-value /main/capturesettings/shutterspeed2=$2
#gphoto2 --capture-image-and-download --filename JP_%H%M%S.%C
#gphoto2 --set-config capturetarget=1
gphoto2 --capture-image

De esta forma simplemente con introducir el primer parámetro como la apertura y la segunda como la velocidad, ya podemos fijar exposición y disparar la cámara.

Si por ejemplo queremos lanzar el autofoco para fijar el foco, hacemos un:

gphoto2 --set-config autofocusdrive=1

Otro caso que nos puede interesar es sacar una imagen de previsualización, para ello podemos hacer:

gphoto2 --capture-preview --set-config viewfinder=0

Otra posibilidad es disparar la cámara desde el disparador de la misma y descargar la imagen a una unidad externa:

gphoto2 --capture-tethered --filename="/images/image-%Y%m%d-%H%M%S.%C"

Y por supuesto podemos acceder y descargar las imágenes de nuestra cámara:

gphoto2 --list-files
gphoto2 --get-file 1
x-rite Professional LED Lighting, DSLR Support and Accessories for Photo and Video BabelColor asociacion española de imagen cientifica y forense