Emiliano Sánchez, un amigo en línea, que sigue mis pasos en programación me hizo una consulta: debido a la actividad volcánica del Popocatépetl, la cual está siendo monitoreada constantemente por el CENAPRED, hay en la página web de dicha institución imágenes del volcán, que se toman cada minuto. La idea de Emiliano es capturar las imágenes que produce el CENAPRED del Popocatépetl (que se generan minuto a minuto) y entonces, una vez que se tengan cientos, quizás miles de imágenes, crear una película de todo el desarrollo de lo que está pasando en el volcán.
El programa
Con esta idea en mente me di a la tarea de ver cómo se podía bajar una imagen de una página web. Hallé, para mi fortuna, que el CENAPRED, en su dirección (URL):
http://www.cenapred.unam.mx/images/popo1.jpg
genera una imagen llamada popo1.jpg por minuto. Esta imagen siempre es la misma, es decir, siempre se llama igual.
Escribí entonces un programa que captura la imagen generada por el CENAPRED cada minuto y la va guardando con nombres que tienen un número secuencial al final de su nombre de manera que pueda tener, por ejemplo, las siguientes imágenes: popo-1.jpg, popo-2.jpg, popo-3.jpg, etc. Así, se puede guardar toda la secuencia de fotos que automáticamente se generan en el sitio web.
El software permite alimentar la ruta de donde se obtendrá la imagen, el nombre con el que se va a guardar y finalmente, el contador para empezar la secuencia de fotos. Con estos datos, el programa funciona minuto a minuto.
Como efecto adicional, el programa presenta en la pantalla la última foto que se haya tomado. Tiene además una barra de progreso que cuenta hasta 60 segundos. De esta manera el usuario está siempre informado de lo que está pasando mientras el software corre.
Siguiente paso
Una
vez que el sistema ha guardado las imágenes que genera la página del CENAPRED,
se puede crear un archivo de video (formato AVI) que puede desplegar cada foto
como una película. Para ello usé el componente en Delphi, AviWriter, para crear fácilmente archivos AVI,
de Elliott Shevin, el cual usa mucho código de Anders Melander. Este programa
simplemente pide las imágenes que queremos cargar para hacer el video y lo hace
prácticamente de inmediato. Es una solución rápida, sin intención de ser la
mejor solución, pero funciona.
Más información
El programa es totalmente gratuito. Si alguien lo quiere, escríbame y se lo mando a vuelta de correo. Para comentarios, ideas y consultas, favor de escribir a morsa@la-morsa.com



11 comments:
Creo que subiendo las imágenes a un servidor y con javascript se podría hacer fácilmente una página que pase las imágenes para ver la animación.
Pues hacer un programa que despliegue imagen tras imagen no es la gran cosa. Lo que me gustaría es guardarlo como un video.
Acabo de ver un programa que hace esto en delphi. Lo probaré en estos días.
saludos
Manuel
La dirección que comentas parece ser la imagen de la estación Altzomoni. Al menos hay otras dos estaciones. Las direcciones de esas otras estaciones son:
Imagen del volcán Popocatépetl - Estación Tianguismanalco
http://www.cenapred.unam.mx/images/popoSur.JPG
Imagen del Volcán Popocatépetl - Tlamacas
http://www.cenapred.unam.mx/images/popoTlamacas2.jpg
Marco,
en mi programa puedes cambiar la dirección (como las que nos diste), para procesar esas imágenes también.
saludos
Manuel
¡Genial esfuerzo! Te paso un timelapse que hizo la NASA en una semana, del Popo, con el satélite Terra.
http://www.nasa.gov/topics/earth/features/mex-volcano-20120423.html
Saludos
Carlos G Mun
Muchas gracias, Carlos.
saludos
Manuel
Ya lo estoy provando y en verdad funciona, como bien mensiona Marco A.Dorantes solo se descarga la imagen de Altzomoni aún al cambiar la dirección de la imagen en el programa, sin embargo vale mucho la pena el programa y el trabajo hecho por el Sr. Morsa, muchas gracias por atender a esta inquietud, me gustaría compartir el primer video en cuanto este listo, saludos.
El siguiente script acepta un entero como parámetro y corresponde al número de imágenes que bajará del servidor.
Los permisos Unix deben ser 555 para que se pueda ejecutar directamente y debería funcionar en linux, aunque no lo probé más que en la Mac.
ejemplo:
./popo.sh 600
#!/bin/sh
for (( i = 1; i <= $1; i++ ))
do
curl -o popo_1`date "+_%Y%m%d-%H:%M:%S"`.jpg "http://www.cenapred.unam.mx/images/popo1.jpg"
curl -o popo_2`date "+_%Y%m%d-%H:%M:%S"`.jpg "http://www.cenapred.unam.mx/images/popoSur.JPG"
curl -o popo_3`date "+_%Y%m%d-%H:%M:%S"`.jpg "http://www.cenapred.unam.mx/images/popoTlamacas2.jpg"
echo Foto: $i
sleep 60
done
Saludos
Para convertir los jpg en una película se puede usar ffmpeg:
Lo malo es que no es una utilería estándar y tengo que compilarlo para usarlo.
http://electron.mit.edu/~gsteele/ffmpeg/
Recomiendo que se use .mp4 (MPEG-4) y no avi.
Saludos
Probando el programa y viendo las imágenes a través del "preview" de la Mac, observé el movimiento de las estrellas minuto a minuto.
¿Cómo se podrá determinar la posición de la cámara usando el movimiento de las estrellas como referencia?
Muy bueno, ernesto... gracias. Como siempre eficiente programador pero mejor amigo.
saludos
Manuel
Post a Comment