Cambiar la fecha de series de imágenes
Uno de los problemas de las cámaras de fototrampeo es que en cuanto están más de 10 segundos sin pilas se resetea el reloj y la fecha impresa en la foto es errónea o muy errónea. En la mayoría de las ocasiones se vuelve al año de fabricación y en otras, cuando el fallo de baterías es leve o momentáneo pues se vuelven atrás 20 horas ó 30 minutos.
Si (como es mi caso) la fecha/hora en que se capturó la imagen es importante pues es un incordio. Pero fácil de solucionar si sabes cuanto de retrasado estaba el reloj de la cámara.
La dificultad está en saber la cantidad de tiempo en que está desajustada la cámara, pero gracias a las fotografías que toma la cámara nos toma al instalarla o desinstalarla es relativamente fácil calcular este desajuste con un margen de error de sólo minutos.
En mi caso, recogí las fotografías a las 19:00 y en ese momento la cámara me tomó una foto marcandola como las 02:16 del mismo día, es decir, la cámara iba retrasada 16 horas 45 minutos.
Cambiar datos EXIF
Leer y escribir datos EXIF en archivos de imágenes exiftool es básico. El alias -alldates nos permite ver todas las fechas relativas a una imagen o varias exiftool -alldates IMAG_0012.JPG
Date/Time Original : 2018:01:31 13:05:09
Create Date : 2018:01:31 13:05:09
Modify Date : 2018:01:31 13:05:09
Para corregir todo una serie de fotos y adelantar sus fechas de creación y modificación 16 horas y 45 minutos basta con entrar en la carpeta que las contenga y en un terminalexiftool -alldates+="0:0:0 16:45:0" *
#retrasar 1 año 20 dias y tres horas
exiftool -alldates-="1:0:20 3:0:0" *.JPG
El formato es AÑO:MES:DIA HORA:MINUTO:SEGUNDOS. Hay que especificarlos la fecha incluso si no vais a modificarlos como en el ejemplo poniéndolos a cero.
En un segundo exiftool modifica todas las imágenes indicadas generando un copia de seguridad del archivo sin modificar añadiendo el sufijo “_original”.
Ahora podéis renombrar las imágenes según su fecha de creación simplemente haciendo:exiftool -FileOrder FileNumber "-FileName<CreateDate" -d AGQ_%Y%m%d_%H%M%S%%-c.%%le'
Eso generaría una lista de archivos como:AGQ_20180130_002234.jpg
AGQ_20180130_125225.jpg
AGQ_20180127_144258.jpg
AGQ_20180131_024455.jpg
AGQ_20180206_141620.jpg
AGQ_20180205_200035.jpg
AGQ_20180203_124745.jpg
Nota la opción “-FileOrder FileNumber” es interesante incluirla (no obligatorio) por el siguiente motivo: si las fotos están tomadas con varios horas o minutos de diferencia no hay problema en el renombrado, pero si las fotos corresponden a una ráfaga de (ejemplo) una cámara reflex, en la que varias fotos comparten la hora:minuto:segundo de creación exiftool las renombrará añadiendo al final un -1, -2, -3, etc… pero puede que índice no respete el orden en que fue realizada la ráfaga. Al incluir FileNumber le decimos que respete el orden número que llevaba el nombre original, y lo mantenga. Así las fotos FOTO_0244.NEF, foto FOTO_0245.NEF, foto FOTO_0246.NEF pasarán a ser AGQ_20180110_123456-1.nef, AGQ_20180110_123456-2.nef, AGQ_20180110_123456-3.nef…compartiendo fecha y orden de creación.
Modificar la fecha impresa en la imagen
(puntua para premio :D )
Obviamente el ejemplo del paso anterior únicamente modificábamos los datos exif insertos el archivo fotográfico. Pero muchas cámaras de fototrampeo sobreimprimen en la imagen la fecha en fueron creadas (mal impresa porque el reloj de la cámara estaba desconfigurado).
Pero nada que no tenga arreglo, con un par de líneas y otra fabulosa herramienta ImageMagick podemos arreglarlo rápidamente.
Las siguientes líneas cogen todos los JPG de una carpeta, renombrados como en el paso anterior y sobreimprimen la fecha de la fotografía con la fecha corregida:
mkdir corregidos
for file in $(find . -type f -name "*jpg"); do
t=$(echo "$file"|sed -r 's/.\/AGQ_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]{2})([0-9]{2})([0-9]{2}).jpg/\2\/\3\/\1 \4:\5:\6/');
convert "$file" -gravity south-east -fill '#dddddd' -draw 'rectangle 1600,1845 2250,1950' -fill black -pointsize 76 -annotate +320+5 "$t" -flatten "./corregidos/$file"
done
Con esa línea se corrigen 200 fotografías en apenas 30 segundos
Arduino Para Niños Parte II: Sensor de Movimiento
Arduino para Niños
Instalar Resilio Sync (antiguo BitTorrent Sync) en openSUSE
Primera observación lunar del 2017
Cuando los planetas se juntan
El meteoro que no fue
Prevenir el borrado accidental de archivos en Linux
Una de las pesadillas recurrentes cuando manejas Linux desde un terminal o consola es equivocarte al teclear un comando como ROOT y en lugar de escribir rm ./* escribir rm *, lo primero borra todo en la carpeta, lo segundo borra todo en el ordenador. Sólo me ha pasado una vez, y recuerdo perfectamente ver como desaparecía la carpeta “/BOOT” y “/GRUB” delante de mis narices antes de darme cuenta de la tremenda metedura de pata (afortunadamente no llegó a la H de /HOME).
Como he visto varias veces volver a “pasar la piedra rozándome la cabeza” hace no mucho (más vale tarde que nunca) me decidí a aplicarme una medida para dedos torpes en dos etapas:
1º/ inhabilitar el comando rm
2º/ habilitar el uso de la papelera en consola.
Inhabilitar rm
Esto es tan sencillo como definir un alias llamado rm que diga algo asíalias rm='echo No use «rm», mejor use «del» o la ruta completa de rm «/bin/rm»
Añadiendo esa línea a nuestro de alias (en ~/.alias ó ~/.bashrc depende de tu Linux) cuando escribamos rm en consola nos aparecerá esa advertencia. Si persistimos en usar rm lo único que tenemos que hacer es usar su path completo /bin/rm.
Habilitar del
Habilitar el comando del (como abreviatura de delete, u otro que tu prefieras) es tan simple como crear un script en nuestro directorio BIN (~/bin) con nombre (p.ejemplo) deltrash.sh y con el contenido:#!/bin/sh
kioclient5 move "$@" trash:/
(Para KDE5, en otros KDE usa kioclient)
Ahora, de nuevo en alias creamos un atajo a nuestro script que diga algo comoalias del="rmtrash"
En adelante tras borrar uno o varios archivos veremos algo como
Digikam para identificar ginetas
Llevo ya bastantes años usando Digikam como gestor de álbumes de fotos. Hace ya muchas versión implantaron un módulo llamado “mesa de luz“, que recordando las mesas de luz de las diapositivas permite comparar cómodamente dos imágenes al mismo tiemnpo de forma sincronizada. Es muy útil para comparar dos imágenes casi idénticas y seleccionar la que tenga mejor nitidez, foco, exposición, etc…
La verdad, no lo he usado casi nunca, no le encontré mucha utilidad, hasta ayer, cuando descubrí que es una herramienta fabulosa para comparar dos fotogramas de las cámaras de trampeo y averiguar si por su patrón de manchas la gineta es la misma o no. A la izquierda el macho de gineta que ya viejo conocido (ver post anterior), a la derecha un “desconocida” fotografiada (por los pelos, solo los cuartos traseros) en una ubicación nueva (y bastante remota con respecto a las originales).
Conclusión, la gineta es la misma, y cada día me alucina más las caminatas que estos animales (paticortos) se pegan cruzándose La Muela de una punta a la otra con una regularidad y facilidad que me tiene asombrado.
Automatizar movimientos de ratón
Ya me pasó hace tiempo, que quería descargar varias decenas de archivos adjuntos a otros tantos emails y no sabía como sin pasarme la mañana moviendo el ratón por la pantalla. Entonces lo solucioné con IMAP, montando el correo electrónico de GMAIL como una carpeta local de mi ordenador pude obtener una copia en disco duro de los emails y sus adjuntos. Ahora se repite, misma situación, solución diferente.
Esta vez he optado por otra solución, requiere menos trabajo y es mucho más rápida que esperar a tener una copia local de GMAIL para extraer archivos, xdotool: un comando de consola que replica los movimientos de ratón y teclado, eventos de click, click-derecho, pulsación de teclas, etc… De esta manera es sumamente fácil simular que movemos el ratón al tal sitio, cliqueamos un botón, movemos a otro, pulsamos ENTER… ad infinitum…
while [ true ]; do xdotool search "Correo" windowactivate --sync mousemove --window %1 290 460 sleep 0.5 click 1 sleep 3 key KP_Enter sleep 1 mousemove 1264 250 sleep 1 click 1 sleep 4; done
La siguiente línea de texto hace eso, sobre una página de GMAIL:
-busca la ventana llamada “Correo” y le da el foco activándola
– usandola como referencia mueve el ratón a sus coordenadas relativas 290×460 (botón descargar adjunto)
– espera 0.5 segundos y cliquea botón izquierdo del ratón (click 1)
– espera 3 segundos (mientras se abre diálogo guardar adjunto)
– pulsa ENTER
– espera 1 segundo (la descarga es rápida)
– mueve el ratón al botón “Siguiente mensaje”
– espera 1 segundo
– pulsa botón izquierdo del ratón
– espera 4 segundos a que cargue siguiente mensaje.
– repetir.
Ni os cuento las risas que nos hemos echado en algún trabajo a cuenta de automatizar el movimiento del ratón y dejar durante horas al 3DStudio modelando el solito escenarios… o dejando al ordenador durante largos periodos de tiempo enviando insultos por mensajería mientras nosotros nos íbamos de coartada a almorzar a la cafetería.