gPhoto2: control remoto de cámara open source
Domingo, 08 de Mayo de 2016 23:18
Uno 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
< Prev | Próximo > |
---|