Sábado, Noviembre 18, 2017

Sacar fotos con la Raspberry con Python o Telegram

Camara

Una vez que hemos visto algunos de los servicios que podemos instalar en nuestra Raspberry Pi, ha llegado el momento de comenzar a trastear con ella. De esta manera, vamos a comenzar a instalar pequeños dispositivos, que nos permitan sacarle el máximo provecho tanto a la Raspberry Pi, como a los servicios que hemos instalado. Aunque va relacionado con los artículos anteriores, este, formará parte de un nuevo tutorial, Trasteando con la Raspberry Pi, donde semana a semana iremos probando distintos dispositivos, sensores y elementos auxiliares, y veremos las posibilidades que nos ofrece. Por supuesto iremos de menos a mas, empezando por soluciones sencillas. Así, para empezar con este tutorial, este capítulo lo vamos a dedicar a como sacar fotos con la Raspberry.

Vamos allá…

Sacar fotos con la Raspberry

¿Para que queremos sacar fotos con la Raspberry?

Antes de nada, indicar que la primera aplicación que le vamos a dar es sacar fotos con la Raspberry, pero sin lugar a dudas, podríamos hacer lo mismo pero con vídeo.

Utilidades le podemos dar todas las que te puedas imaginar, y alguna mas, desde,

  • Tomar fotos de alguna parte de nuestra casa o nuestro negocio para saber como está.
  • Hacer una foto si salta la alarma o se detecta un intruso.
  • Comprobar si se han regado las plantas o si se están secando o si están muertas
  • Hacer una foto del que ha llamado a la puerta o del que ha entrado en casa.
  • Saber si el gato ha comido.
  • Monitorizar la vida de una planta o de cualquier aspecto de nuestra vida, tomando fotografías cada cierto tiempo. Luego esto se puede montar en un vídeo para ver pasar la vida a cámara rápida (como si no pasara suficientemente rápida ya).

En fin las opciones son muchas, y de lo mas variopinto…

¿Que cámara comprar?¿Cual me he comprado yo?

Aquí dependerá de lo que quieras hacer con ella, y la resolución que quieras obtener.

Tienes desde las oficiales de Raspberry Pi que rondan los 30 €, en sus dos opciones la v2 de 8MP que viene con un sensor Sony IMX219 ó la PiNoIR V2, que permite tomar fotografías infrarrojas, en la oscuridad o en condiciones de baja luminosidad.

Luego, a parte de las oficiales, tienes otras opciones como Zacro con soporte para visión nocturna y un precio de unos 25 € o la Kuman con un precio de unos 18 €.

En particular, para lo que yo la quiero, que es para hacer fotografías, y hacer aplicaciones, etc, no he querido tirar por lo alto, y no necesito (por ahora) fotografías infrarrojas. Así que he ido a una baratita, la de AZDelivery con un precio de unos 17 €, pero que no permite hacer fotografías con poca luz, aunque en los anuncios digan lo contrario.

Instalación

Antes de instalar la cámara, te recomiendo que desconectes la Raspberry Pi, por lo que pudiera pasar. Instalar la cámara es mas sencillo que comprarla, te lo puedo asegurar. Eso si, por lo menos tienes que mirar donde debes conectar la cámara. Por supuesto, yo la conecté la primera vez donde no tocaba, pero, menos mal, no pasó nada.

Esto da la razón a los fabricantes de componentes de ordenadores, que diseñan los conexiones de estos componentes para que solo entren en un sitio, y que torpes como yo no se empeñen en conectarlos donde no toca.

En fin, y para colmo, es que además, en la propia placa indica donde debes conectar la cámara… si es que no hay mas ciego que el que no quiere ver.

Para conectar el bus de cinta debes levantar ligeramente la pestaña, colocar el bus, y bajar la pestaña, y ya lo tienes. Yo para comprobar su conexión, he utilizado la fuerza bruta, o lo que es lo mismo, he estirado del propio bus, a ver si se salía de la conexión.

Configuración

Una vez hemos conectado la cámara a la Raspberry Pi, el siguiente paso, configurarla para que funcione correctamente. Para ello, ejecutaremos la siguiente orden,

sudo raspi-config

Una vez accedamos al menú de configuración, seleccionaremos la opción 5 Interfacing Options, y posteriormente a la opción P1 Camera respondiendo con Si a la pregunta Would you like the camera interface to be enabled?. Nos tenemos que asegurar que la respuesta es The camera interface is enabled.

A jugar…

Antes de liarnos con algo de Python, indicarte que tienes dos utilidades que te permitirán hacer uso de la cámara directamente desde la línea de comandos,

  • raspistill, permite tomar fotografías
  • raspivid, sirve para capturar vídeo.

Ambas utilidades son sencillas de usar, y puedes acceder a todas las opciones ejecutando las órdenes,

raspistill --help
raspivid --help

respectivamente.

Tomando fotografías

Pero si no puedes resistir la tentación, y quieres empezar a probar tu cámara, vamos a empezar a sacar fotos con la Raspberry, para ver el resultado. Para ello tan solo necesitamos ejecutar la orden,

raspistill -o ejemplo.jpg

También podemos añadir las dimensiones de la captura de imagen,

raspistill -o ejemplo.jpg -w 1024 -h 600

O incluso hacer fotografías cada cierto tiempo,

raspistill -o ejemplo_%04d.jpg -w 1024 -h 600 -tl 1000 -t 10000

Con esta última orden, la Raspberry tomará fotografías cada segundo (-tl 1000 –esto son milisegundos-) durante 10 segundos (-t 10000 –esto son milisegundos-) con unas dimensiones de 1024×600 y el nombre del archivo será ejemplo_xxxx.jpg. Las x se sustituyen por 0 para cifras bajas.

Si el intervalo entre fotografías es -tl 0, la Raspberry intentará tomar las fotografías tan rápido como sea posible, pero no será cero, porque el tiempo entre capturas como mínimos es de 30 milisegundos, que es el tiempo necesario para calcular la exposición.

Otra interesante opción, es utilizar cron, sobre el que ya comenté en el artículo sobre programación de tareas con cron. En este caso, es interesante crear un script, que nos ayude a identificar la captura por fecha a la hora de sacar fotos con la Raspberry. Así, por ejemplo, podemos crear el archivo captura.sh,

#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H%M")
raspistill -o /home/pi/captura_$DATE.jpg

Por supuesto, le tenemos que dar permiso de ejecución,

chmod +x captura.sh

Ahora ya podemos editar cron e indicar la orden a ejecutar. Así por ejemplo, si queremos que haga una captura todos los días a las 6:00 de la mañana para ver que cara tenemos, la línea a añadir en cron sería la siguiente,

* 6 * * * /home/pi/capura.sh 2>&1

Capturando vídeo

Hacer una captura de vídeo es tan sencillo como ejecutar la siguiente orden, que graba vídeo durante 10 s (-t 10000 –en milisegundos-).

raspivid -o video.h264 -t 10000

Esto directamente con VLC lo puedes ver, aunque hay que especificar que la caputra de vídeo se hace en formato H264, así que hay determinados reproductores de vídeo que no son capaces de tratarlo. Si ese es tu caso, lo mejor sería, convertirlo a formato MP4.

Utilizando Python

Lo mas interesante es poder utilizar la cámara desde alguna aplicación en Python. Lo primero es instalar la librería necesaria,

sudo apt install python3-picamera

A continuación puedes ver un script sencillo de como utilizar la cámara para sacar fotos con la Raspberry,

from picamera import PiCamera
try:
    camera = PiCamera()
    camera.start_preview()
    # Calentando cámara para la primera foto
    sleep(2)
    camera.capture('mi-primera-foto.png', format='png', use_video_port=True)
except Exception as e:
    print(e)
finally:
    camera.close()

Un uso interesante es el de añadir este código a un bot de telegram. Así, cuando le demos la orden al bot tomará una fotografía.

 

Más información: Raspberry Pi

Fuente: atareao

¿Quién está en línea?

Hay 38 invitados y ningún miembro en línea

Contador de Visitas

9047354
Hoy Hoy 737
Ayer Ayer 1413
Esta semana Esta semana 7902
Este mes Este mes 25845
Total de Visitas Total de Visitas 9047354

Día con más
visitantes

11-11-2017 : 2493

Gracias por su visita