Tutorial Raspberry Pi - Uso de PiCamera con Python

Curso de Python 3

En este curso de programación en Python 3 aprenderás lo fundamental para poder hacer tus propios proyectos. ¿Quieres saber cómo empezar a programar? ¡Apúntate a este curso!

Comenzar ahora

picamera¡Hola! Bueno como habrán leído hay muchas formas de usar nuestra Pi Camera con Python, sin embargo, siempre era con subprocesos, ejecutando un programa distinto a Python dentro de este. Hasta que hace pocos días salio la noticia en Raspberrypi.org  de una librería para controlar nuestra Pi Camera, nativa de Python. Con esta librería podemos controlar desde un preview hasta el control del led que incluye la Pi Camera. Todo esto gracias a  Dave Hughes.

Instalemos Para instalar como todo programa es recomendable casi necesario actualizar nuestra Raspberry Pi, para que pueda encontrar la librería en los repositorios, usamos los típicos comandos para la terminal;
sudo apt-get update
sudo apt-get upgrade
y para descargar e instalar la librería basta con ejecutar esto en el Terminal.
sudo apt-get install python-picamera
Vista previa Esta opción nos permite visualizar en tiempo real la imagen dela cámara, ademas de poder ajustar los parámetros como brillo y ver los resultados inmediatamente en la vista previa. Crearemos un ejemplo que nos permita ver la vista previa.
#!/usr/bin/python
import time
import picamera

with picamera.PiCamera() as picam:
    picam.start_preview()
    time.sleep(10)
    picam.stop_preview()
    picam.close()
Lo guardamos y lo ejecutamos como cualquier otro programa de python mediante consola. Tomar una Foto Tomar una foto con esta librería basta con una función, como lo muestra el siguiente ejemplo:
#!/usr/bin/python
import time
import picamera

with picamera.PiCamera() as picam:
    picam.start_preview()
    time.sleep(5)
    picam.capture('nombre.jpg')
    picam.stop_preview()
    picam.close()
En el ejemplo fue guardada una captura con el formato 'jpg' pero de la misma forma podemos guardar la captura en 'png', 'gif', 'bmp', 'yuv', 'rgb' y 'raw'. Lo que es bastante cómodo para poder guardar directamente al formato que ocupemos. Filmar un Vídeo Al igual que el anterior ejemplo basta con una función, en el siguiente ejemplo mostraremos con preview y gravaremos un vídeo al mismo tiempo de 20 segundos.
#!/usr/bin/python

import time
import picamera

with picamera.PiCamera() as picam:
    picam.start_preview()
    picam.start_recording('video.h264')
        picam.wait_recording(20)
        picam.stop_recording()
    picam.stop_preview()
    picam.close()
Por el momento solo he podido grabar en formato H264,  es importante  agregar el wait_recording() ya que aparte de servir como el time.sleep(), hace un reconocimiento al mismo tiempo que va gravando y si por ejemplo ya no hay espacio en disco para la grabación. Resolución Como notaron al tomar la foto es de mayor resolución que el vídeo incluso que la vista previa. "En concreto, el sensor de la cámara tiene una resolución de 2592x1944 píxeles (aproximadamente 5 mega píxeles en el área), pero sólo los 1920x1080 píxeles en el centro del sensor se utilizan para las previsualizaciones o video" Dave Hughes.  sensor_area   Por esta razón y muchas mas, la librería cuanta con una opción para seleccionar la resolución que queramos como en el siguiente ejemplo.
#!/usr/bin/python

import time
import picamera

with picamera.PiCamera() as picam:
    picam.resolution = (2592, 1944)
    picam.start_preview()
    time.sleep(3)
    picam.capture('foto.jpg')
    picam.stop_preview()
    picam.close()
También debido a que entre mas resolución la imagen es mas pesada, así que también nos brindan un modo de reescalar la imagen, es decir que abarque todo lo que la cámara ve pero que se guarde en una resolución menor .
#!/usr/bin/python

import time
import picamera

with picamera.PiCamera() as picam:
    picam.resolution = (2592, 1944)
    picam.start_preview()
    time.sleep(3)
    picam.capture('foto.jpg',resize=(1024,768))
    picam.stop_preview()
    picam.close()
 Led Aveces queremos tomar fotos y que nadie se de cuenta por desgracia la cámara tiene un led que se enciende al usarla, ahora gracias a esta librería podemos desactivar este molesto led.
#!/usr/bin/python

import time
import picamera

with picamera.PiCamera() as picam:
    picam.led= False
    picam.start_preview()
    time.sleep(3)
    picam.stop_preview()
    picam.close()
Nota: Para poder ejecutar en caso de ajustar el led, tendremos que ejecutar como root, o bien con sudo python programa.py ISO Para aquellos que sepan un poco mas de fotografía les agradara saber que se puede ajustar el ISO, para poder sacar mejores fotografías y es muy sencillo, solo tenemos que llamar a la función ISO e igualarla a un valor, que pueden ser alguno de estos; 100, 200, 320, 400, 500, 640, 800.
#!/usr/bin/python

import time
import picamera

with picamera.PiCamera() as picam:
    picam.start_preview()
    picam.ISO =500
    time.sleep(3)
    picam.capture('foto.jpg',resize=(1024,768))
    picam.stop_preview()
    picam.close()
Velocidad de Obturación Otra característica que me gusto mucho es que puedes controlar la velocidad de obturación, lo que te permite sacar fotografías a un mas profesionales. Los valores de dan en micro segundos.
#!/usr/bin/python

import time
import picamera

with picamera.PiCamera() as picam:
    picam.start_preview()
    picam.ISO =100
    time.sleep(3)
    picam.shutter_speed= 300000
    picam.capture('foto.jpg',resize=(1024,768))
    picam.stop_preview()
    picam.close()
Brillo Ademas de todas las anteriores igual se puede ajustar el brillo basta con asignar un valor del 0 al 100 .
#!/usr/bin/python

import time
import picamera

with picamera.PiCamera() as picam:
    picam.start_preview()
    picam.brightness= 60
    picam.ISO =100 
    time.sleep(3) 
    picam.shutter_speed= 300000 
    picam.capture('foto.jpg',resize=(1024,768)) 
    picam.stop_preview() 
    picam.close()
  Efectos de imagen Como toda buena cámara, la Picam cuenta con efectos de cámara, ahora mismos solo he probado 'negative' , 'solarize' y 'gpen'
#!/usr/bin/python

import time
import picamera

with picamera.PiCamera() as picam:
    picam.led = False
    picam.start_preview()
    picam.image_effect = 'negative'
    time.sleep(20)
    picam.stop_preview()
    picam.close()
Nota:  Los parámetros como brillo, ISO, contraste, efectos de imagen , saturación y nitidez se pueden ajustar cuando la vista previa esta activada. Se pueden ajustar infinidad de cosas mas, como saturacion, nitidez, rotar imagen, hacer streaming, time lapse, ráfagas de fotos muy rápidas. Los invito a que ustedes mismos experimenten con toda esta librería, encontraran toda la documentación en PICAMERA . Este es un TimeLapse que hice cuando estaba probando la librería, espero y les guste. Gracias por su tiempo, les mando un saludo y suerte en sus proyectos...

portada


¿Quieres seguir aprendiendo?