Sistema de riego sencilla: corrigiendo la fecha

Un inconveniente que surgió con la captura de las imágenes desde la cámara IP es la fecha y hora de la cámara, hasta el momento no encontré manera de setear la fecha correcta, por ende en todas las imágenes la marca de agua con la fecha y hora es incorrecta.

Alma en el fondo de la imágen

La imagen anterior se corresponde con la marca de tiempo 2019-09-04 13:20:09, sin embargo en la marca de agua figura otra fecha del 2018.

La forma que encontré hasta el momento es correr un pequeño script en Python para corregir la fecha superponiendo un recuadro negro con la fecha correcta, la cual toma del nombre del archivo; para esto dos funciones de OpenCV.

El script es sencillo consta de tres partes:
1. Lista todos los archivos png dentro de la carpeta donde se estan guardando las imágenes.


1
2
3
4
5
ruta = "C:/Users/Guillermo/Desktop/img_riego"
output = "C:/Users/Guillermo/Desktop/output/"
for file in os.listdir(ruta):
    if file.endswith(".png"):
        print(file)

Simplemente recorremos los archivos dentro de la ruta (vble que contiene el path hasta las imágenes) y evaluamos si el archivo termina con .png o no para validar que sean imágenes.


2. Abre cada archivo, agrega el rectángulo negro y el texto. El texto además identifica que nro. de días es, no muestra la fecha. Es para poder identificar rápidamente el paso del tiempo.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        img = cv2.imread(ruta+"/"+file)

        cv2.rectangle(img,(850,54),(1261,84),(0,0,0),-1)

        t = file.split("_")

        if(nombre != str(t[0])):
            nombre = str(t[0])
            nroDia = nroDia + 1

        hora = t[1].split(".")[0]
        texto = "Dia "+str(nroDia)+" "+str(hora)

        font = cv2.FONT_HERSHEY_SIMPLEX
        cv2.putText(img,texto,(850,82), font, 1,(255,255,255),2,cv2.LINE_AA)

Abrimos la imagen y almacenamos en img; agregamos el rectangulo cuya coordenamas previamente las sacamos por medio de algun soft de edicion de imagenes, en este caso siempre seran las mismas.

Evaluamos si en el nombre de la imagen cambio o no la fecha, en caso que haya cambiado, incrementamos el nro de dias en 1.

Por ultimo ponemos el texto en la imagen.


3. Guarda la imagen en una carpeta de salida, de manera de conservar el original:


1
cv2.imwrite(output+file,img)

Se puede encontrar el script completo aqui.

Basta con hacer algunos pequeños ajustes para que se pueda utilizar para cualquier tipo de foto.

El resultado es el siguiente:

Sistema de riego sencilla: timelapse

Siempre me gustaron los timelapse, en especial cuando se trata de algún proceso natural donde vemos crecer algo, es por ello que decidí capturar imágenes durante el tiempo que tarde en crecer las lechugas.

Una imagen tomada hoy. La cámara esta fuera de fecha.

Para lograr esto voy a utilizar una cámara ip que compre en Aliexpress hace un tiempo, que utiliza un protocolo llamada RTSP para transmitir video en tiempo real.

Hace un tiempo había armado un video de como capturar imagen de la cámara ip utilizando Python, pueden verlo aquí:

El repositorio del código del ejemplo lo pueden encontrar:
https://github.com/gsampallo/ipcam_python

El mayor problema que tuve en esto fue lograr instalar opencv en la raspberry, si bien existen numerosos tutoriales en internet no quería descargar de cero y tener que compilarlo; opté por instalar la versión para python3 (junto con python3) por medio de apt, más adelante hablara más sobre este tema.

Esta es una primer aproximación, donde arme un pequeño script -llamado creativamente camara.py- que toma las imágenes de la cámara y lo guarda en formato png; las imágenes pesan alrededor de 2mb, será necesario más adelante preparar alguna otra tarea para que comprima las imágenes.

Usando cron se dejo programado en la raspberry (donde corre el script) para que ejecute la captura de imágenes cada 20 minutos; también hay un segundo script en bash que copia las imágenes a una carpeta especifica, las sube a un servidor ftp (para liberar espacio en la raspberry) y luego las elimina.

Cuando tenga imágenes de algunos días, voy a armar un pequeño timelapse de como avanza el proyecto, por lo pronto no queda más que esperar.

UPDATE

La página esta online, pueden verla acá:

https://gsampallo.com/riego/

La imagen se actualiza cada 5′, aún no corregí la fecha de la cámara.