Uno de los principales atractivos de la plataforma Raspberry Pi es su módulo de cámara. Actualmente, la Fundación Raspberry Pi ofrece tres módulos de cámara:
• Módulo de cámara 2
• 2 módulos de cámara NoIR
• Cámara Raspberry Pi de alta calidad
El módulo de cámara 2 es un reemplazo del módulo de cámara original a partir de abril de 2016. El módulo V2 tiene un sensor Sony IMX219 de 8 megapíxeles en comparación con el sensor OmniVision OV5647 de 5 megapíxeles del módulo original. El módulo es compatible con Raspberry Pi 1, 2, 3 y 4. Se puede conectar fácilmente a la interfaz serial de la cámara (puerto CSI) de cualquier Raspberry Pi. El módulo de cámara V2 admite modos de vídeo 1080p30, 720p60 y VGA90. El nuevo módulo no es sólo de alta resolución. Es mucho mejor en calidad de imagen, rendimiento con poca luz y fidelidad del color. El módulo 2 de la cámara de infrarrojos es el mismo que el módulo 2 normal, excepto que no utiliza un filtro de infrarrojos. La cámara Pi NoIR es muy útil para fotografía nocturna y captura de vídeo. La cámara de alta calidad es un sensor Sony IMX477 de 12,3 megapíxeles que admite lentes con montura C y CS.
Puedes desarrollar muchos proyectos interesantes con el módulo de cámara Raspberry Pi. Bueno, con solo instalar un módulo de cámara en su pequeña computadora de bolsillo, puede explorar el vasto mundo del procesamiento de imágenes, el procesamiento de videos e incluso el aprendizaje automático. En este artículo, exploramos cómo comenzar con el módulo de la cámara y controlarlo usando Python.
Qué necesitas
Todo lo que necesitas es una Raspberry Pi (1/2/3/4) y el módulo de la cámara. El módulo de cámara predeterminado se utiliza para tomar fotografías bajo la luz. La cámara NoIR Pi toma fotografías en la oscuridad y requiere una fuente de luz infrarroja adicional. En este artículo, estamos trabajando con el módulo de cámara estándar. El módulo de la cámara debe venir con un cable flexible para conectarse al puerto CSI. Para conectar la cámara a la Raspberry Pi Zero, se requiere un cable más pequeño.
Cómo conectar el módulo de la cámara
Todos los Raspberry Pis tienen una interfaz de cámara en serie (puerto CSI). El módulo de la cámara está conectado al puerto CSI. Es común confundir el puerto CSI con el puerto de pantalla. La ubicación del puerto CSI en Raspberry Pi se indica a continuación.
Para instalar el módulo de la cámara, ubique el puerto CSI. Retire con cuidado el clip de plástico de la puerta. Inserte el cable plano del módulo de la cámara en el puerto CSI de modo que los conectores en la parte inferior del cable miren a los contactos del puerto. Vuelva a colocar el clip de plástico para que el cable plano quede asegurado. El módulo de cámara conectado a la Raspberry Pi se parece al que se muestra a continuación.
Habilitar la cámara Raspberry Pi
El módulo de la cámara no está habilitado de forma predeterminada. Después de conectar el módulo de la cámara, inicie Raspberry Pi. Vaya al menú principal y abra la herramienta de configuración de Raspberry Pi. También puede abrir la herramienta de configuración en la terminal escribiendo sudo raspi-config.
En la herramienta de configuración, seleccione la pestaña de interfaces y asegúrese de que la cámara esté habilitada.
Si no está habilitado, habilite la cámara y reinicie la Raspberry Pi.
Tomar instantáneas de la línea de comando
Una vez que el módulo de la cámara esté instalado y habilitado, es hora de probarlo. El mejor lugar para probar el módulo de la cámara es la línea de comandos de Raspberry Pi, es decir, el shell Bash. Abra la ventana de la terminal haciendo clic en el icono de la terminal en la barra de tareas.
Para tomar una foto, escriba el siguiente comando y presione Entrar.
raspistill -o Escritorio/imagen.jpg
El comando anterior toma una foto usando el módulo de la cámara y la guarda en el escritorio. La vista de la cámara se abre durante cinco segundos cuando se ejecuta el comando anterior y se cierra cuando se captura una imagen fija. Las imágenes se pueden guardar en cualquier otra ubicación siempre que exista la carpeta especificada en la estructura de directorios de Raspberry Pi.
Capturar un vídeo desde la línea de comando
Para grabar un video usando el módulo de la cámara, escriba el siguiente comando y presione Enter.
raspivid -o Escritorio/video.h264
El comando anterior captura una grabación de video y guarda el video grabado en una carpeta específica cuando se detiene. Al igual que las imágenes, los vídeos también se pueden guardar en cualquier ubicación siempre que exista la carpeta especificada en la estructura de directorios de Raspberry Pi. Los videos guardados se pueden reproducir usando un reproductor VLC.
Controlando el módulo de la cámara con Python
El módulo de la cámara se puede controlar mediante Python. Esto requiere la biblioteca picamera. En Raspberry Pi 3/4, la biblioteca picamera ya está instalada con IDLE o Thonny Python IDE. Si falta la biblioteca picamera, se puede instalar para todos los usuarios usando los siguientes comandos.
$ sudo apt-get install python-picamera
Recuerde actualizar su instalación después de instalar la biblioteca picamera usando los siguientes comandos.
$ sudo apt-obtener actualización
$ sudo apt-obtener actualización
La biblioteca picamera también se puede instalar para todos los usuarios que utilizan PIP.
$ pip instalar picamera
En un script de Python, la biblioteca picamera se puede importar usando los siguientes comandos.
importar picamera PiCamera
Para utilizar el módulo de cámara en un script de Python, se debe crear una instancia de un objeto de la clase picamera de la siguiente manera.
cámara = PiCamera
Probando el módulo de la cámara con Python
Para probar el módulo de la cámara con Python, la mejor manera es ejecutar la vista previa de la cámara durante algún tiempo. Si el módulo de la cámara está instalado correctamente y funciona con la placa Raspberry Pi, un LED rojo parpadeará en el módulo de la cámara cada vez que se inicie la placa Raspberry Pi. El LED rojo permanece encendido cuando la cámara está activa.
Guarde el siguiente script de Python en un archivo .py y ejecute el código para ver la vista de la cámara.
importar picamera PiCamera
del tiempo importa dormir
cámara = PiCamera
cámara.start_preview
dormir (5)
cámara.stop_preview
Cabe señalar que el archivo nunca debe guardarse como picamera.py. También hay que tener en cuenta que la vista de la cámara sólo funciona cuando hay un monitor conectado a la Raspberry Pi. No funciona con acceso remoto, ya sea SSH o VNC.
El método start_preview inicia una vista previa de la cámara. Cuando la vista de la cámara está activa, toda la pantalla del monitor está ocupada por la vista de la cámara. La vista previa de la cámara se puede detener en código Python usando el método stop_preview. Si olvidó agregar una línea de código para detener la vista previa de la cámara, solo podrá detenerla saliendo de la ejecución del script. Dado que toda la pantalla está ocupada por la vista de la cámara, presione Ctrl+F2 para detener la ejecución del código. Esto saldrá de forma segura de la vista de la cámara.
Tomar fotografías con la cámara Raspberry Pi usando Python
Se pueden tomar fotografías utilizando el método de captura de la clase picamera. El método requiere una ruta de archivo para almacenar la imagen con un formato de imagen especificado correctamente. Ejecute el siguiente código para capturar una imagen fija usando Python.
importar picamera PiCamera
del tiempo importa dormir
cámara = PiCamera
cámara.start_preview
dormir (5)
cámara.capture('/home/pi/Desktop/image.jpg')
cámara.stop_preview
Se debe llamar al método de suspensión durante al menos 2 segundos antes de capturar la imagen. El sensor de la cámara necesita algo de tiempo para detectar los niveles de luz. Unos segundos después de iniciar la vista previa de la cámara, el módulo tiene algo de tiempo para adaptarse a la luz ambiental.
El código anterior ejecuta la vista previa de la cámara durante 5 segundos. Toma una foto y la guarda en la carpeta especificada. La carpeta debe existir en la estructura de directorios de Raspberry Pi y el nombre de la imagen debe especificarse en un formato reconocido como jpg, jpeg o png.
Para tomar varias fotografías, se puede utilizar un bucle for de la siguiente manera.
importar picamera PiCamera
del tiempo importa dormir
cámara = PiCamera
cámara.start_preview
para i en el rango (5):
dormir (5)
cámara.capture('/home/pi/Desktop/image%s.jpg' % i)
cámara.stop_preview
El código anterior abre una vista de cámara, toma cinco fotografías en un intervalo de 5 segundos y finalmente cierra la vista de cámara.
Grabación de video con cámara Raspberry Pi usando Python
Se puede grabar un vídeo utilizando los métodos start_recording y stop_recording de la biblioteca picamera. El método start_recording comienza a grabar un video. Después se puede invocar un método de suspensión durante la duración prevista del vídeo grabado. La grabación de video se puede detener usando el método stop_recording. Ejecute el siguiente código para grabar un video usando Python.
importar picamera PiCamera
del tiempo importa dormir
cámara = PiCamera
cámara.start_preview
cámara.start_recording('/home/pi/Desktop/video.h264')
dormir (10)
cámara.detener_grabación
cámara.stop_preview
El código anterior graba un video usando una cámara Raspberry Pi durante 10 segundos. El vídeo grabado se guarda en la ubicación especificada. La ubicación especificada debe existir en la estructura de directorios de Raspberry Pi. El nombre del vídeo debe especificarse en el formato de archivo apropiado. La biblioteca picamera admite formatos de vídeo h264 y mjpeg.
Girar la vista de la cámara
Es posible obtener una vista desorientada de la cámara en el monitor debido a una instalación incómoda del módulo de la cámara. La vista de la cámara se puede girar a 90˚, 180˚ y 270˚ usando la propiedad de rotación del objeto de la cámara. Si la vista de la cámara está al revés, use el siguiente código.
cámara = PiCamera
rotación de la cámara = 180
Hacer transparente la vista de la cámara
Puede hacer que la vista de la cámara sea transparente. Es útil ver errores de compilación de código mientras la vista de cámara está activa. Esto se hace configurando el nivel alfa de la vista previa de la cámara. Se pasa como argumento al método start_preview. El valor de un parámetro alfa se puede establecer entre 0 y 255.
cámara = PiCamera
cámara.start_preview(alfa=200)
Cambiar el brillo de la vista de la cámara
El brillo de la vista previa de la cámara se puede configurar cambiando la propiedad de brillo del objeto de la cámara. El brillo se puede configurar entre 0 y 100.
cámara = PiCamera
cámara.start_preview
cámara.brillo = 70
Cambiar el contraste de la vista de la cámara
El contraste de la vista de la cámara se puede configurar cambiando la propiedad de contraste del objeto de la cámara. El contraste se puede establecer entre 0 y 100.
cámara = PiCamera
cámara.start_preview
cámara.contraste = 70
Cambiar la resolución y la velocidad de fotogramas
De forma predeterminada, la resolución de las imágenes capturadas se establece según la resolución del monitor. La resolución máxima para imágenes fijas puede ser 2596×1944 y para grabación de vídeo es 1920×1080. La resolución mínima es 64×64. La resolución se puede cambiar cambiando la propiedad de resolución del objeto de la cámara. Cabe señalar que si se selecciona una resolución alta, la velocidad de fotogramas se debe reducir para un funcionamiento adecuado cambiando la propiedad de velocidad de fotogramas del objeto de la cámara.
cámara = PiCamera
cámara.resolución = (2592, 1944)
cámara.framerate = 15
Agregar texto a las imágenes
Puede agregar texto a imágenes fijas especificando la propiedad annotate_text del objeto de la cámara.
cámara = PiCamera
cámara.start_preview
camera.annotate_text = “EEWORLDONLINE”
Cambiar la fuente y el color del texto agregado
El tamaño de fuente, el color y el color de fondo del texto agregado se pueden cambiar especificando las propiedades annotate_text_size, annotate_foreground y annotate_background del objeto de la cámara. Para agregar color al texto, la clase de color también debe importarse desde picamera. El tamaño del texto se puede configurar entre 6 y 160. El tamaño de texto predeterminado es 32.
importar picamera PiCamera, Color
del tiempo importa dormir
cámara = PiCamera
cámara.start_preview
cámara.annotate_text_size = 50
camera.annotate_background = Color('azul')
camera.annotate_foreground = Color('amarillo')
camera.annotate_text = “EEWORLDONLINE”
dormir (5)
cámara.capture('/home/pi/Desktop/image.jpg')
cámara.stop_preview
Cambiar la exposición de las imágenes capturadas
La exposición de las imágenes capturadas se puede configurar cambiando la propiedad position_mode del objeto de la cámara. El modo predeterminado es automático. Los modos de exposición admitidos por la biblioteca de picamera son apagado, automático, nocturno, vista nocturna, retroiluminación, foco, deportes, nieve, playa, muy largo, fps fijos, antivibración y fuegos artificiales.
cámara = PiCamera
cámara.start_preview
cámara.exposure_mode = 'playa'
dormir (5)
cámara.capture('/home/pi/Desktop/beach.jpg')
cámara.stop_preview
Ejecute el siguiente código para recorrer todos los modos de exposición en la vista de la cámara.
cámara = PiCamera
cámara.start_preview
para exmode en cámara.EXPOSURE_MODES:
camera.exposure_mode = modo ex
camera.annotate_text = “Modo de exposición: %s” % exmode
dormir (5)
cámara.stop_preview
Cambiar el balance de blancos de la imagen
El balance de blancos de las imágenes capturadas se puede configurar cambiando la propiedad awb_mode del objeto de la cámara. El modo predeterminado es automático. Los modos preestablecidos de balance de blancos admitidos por la biblioteca de picamera son apagado, automático, noche, luz solar, nublado, sombra, tungsteno, fluorescente, incandescente, flash y horizonte.
cámara = PiCamera
cámara.start_preview
camera.awb_mode = 'luz del sol'
dormir (5)
cámara.capture('/home/pi/Desktop/beach.jpg')
cámara.stop_preview
Ejecute el siguiente código para recorrer todos los modos de balance de blancos en la vista de la cámara.
cámara = PiCamera
cámara.start_preview
para awbmode en cámara.AWB_MODES:
Cámara. awb_mode = modo awb
camera.annotate_text = “Modo de balance de blancos: %s”% awbmode
dormir (5)
cámara.stop_preview
Agregar efectos de imagen
La biblioteca picamera también permite agregar efectos de imagen a las imágenes capturadas. Para agregar un efecto de imagen, es necesario cambiar la propiedad image_effect del objeto de la cámara. Los efectos de imagen admitidos son ninguno, negativo, solarización, boceto, reducción de ruido, relieve, pintura al óleo, sombreado, gpen, pastel, acuarela, película, desenfoque, saturación, cambio de color, desvanecimiento, posterización, punto de color, balance de colores de imagen, dibujos animados, desentrelazado1 y desentrelazado2.
cámara = PiCamera
cámara.start_preview
camera.image_effect = 'pintura al óleo'
dormir (5)
cámara.capture('/home/pi/Desktop/beach.jpg')
cámara.stop_preview
Ejecute el siguiente código para recorrer todos los efectos de imagen en la vista de la cámara.
cámara = PiCamera
cámara.start_preview
para efecto en la cámara.IMAGE_EFFECTS:
camera.image_effect = efecto
camera.annotate_text = “Efecto: %s” % efecto
dormir (5)
cámara.stop_preview
Conclusión
El módulo de cámara Raspberry Pi es muy divertido. La biblioteca picamera está bien escrita y es potente. Le permite tomar fotografías, grabar videos, transmitir videos, transmitir videos a una red e incluso procesar imágenes con openCV. El módulo de la cámara es fácil de instalar y ofrece infinitas posibilidades para hacer muchas cosas interesantes.