Nota

¡Hola, bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook! Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirte?

  • Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances exclusivos: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones y sorteos festivos: Participa en sorteos y promociones navideñas.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo!

3.1.1 Módulo Fotográfico

Introducción

En este kit, equipado con un módulo de cámara, intentemos tomar una foto con Raspberry Pi.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/3.3.1_photograph_list.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Módulo de Cámara

COMPRAR

Procedimientos Experimentales

Paso 1: Accede al Escritorio de Raspberry Pi. Es posible que necesites una pantalla para una mejor experiencia, consulta: Connect your Raspberry Pi. O accede al escritorio de Raspberry Pi de forma remota, para un tutorial detallado consulta Escritorio Remoto.

Paso 2: Abre una Terminal y ve a la carpeta del código.

cd ~/raphael-kit/python-pi5

Paso 3: Ejecuta.

sudo python3 3.1.1_PhotographModule_zero.py

Después de que el código se ejecute, la cámara tomará una foto. Ahora puedes ver la foto llamada my_photo.jpg en el directorio ~.

Nota

También puedes abrir 3.1.1_PhotographModule.py en la ruta ~/raphael-kit/python-pi5/ con un IDE de Python, haz clic en el botón Ejecutar para ejecutar y detén el código con el botón Detener.

Si deseas descargar la foto a tu PC, consulta Software FileZilla.

Advertencia

Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.

Código

#!/usr/bin/env python3
from picamera2 import Picamera2, Preview
import os

# Obtener el nombre de usuario actual
user = os.getlogin()
# Obtener la ruta al directorio principal del usuario
user_home = os.path.expanduser(f'~{user}')

# Crear una instancia de Picamera2
camera = Picamera2()
# Recuperar la configuración predeterminada de previsualización
preview_config = camera.preview_configuration

try:
    # Configurar tamaño y formato de previsualización
    preview_config.size = (800, 600)
    preview_config.format = 'XRGB8888'
    # Iniciar la previsualización de la cámara en modo QTGL
    camera.start_preview(Preview.QTGL)
    # Iniciar la cámara
    camera.start()
    # Capturar y guardar una foto en el directorio principal del usuario
    camera.capture_file(f'{user_home}/my_photo.jpg')

except KeyboardInterrupt:
    # Detener la previsualización de la cámara si ocurre una interrupción de teclado (por ejemplo, Ctrl+C)
    camera.stop_preview()
    pass

Explicación del Código

  1. Importa las clases Picamera2 y Preview de la biblioteca picamera2, y el módulo os para interacciones con el sistema operativo.

    #!/usr/bin/env python3
    from picamera2 import Picamera2, Preview
    import os
    
  2. Recupera el nombre de usuario actual y la ruta a su directorio principal.

    # Obtener el nombre de usuario actual
    user = os.getlogin()
    # Obtener la ruta al directorio principal del usuario
    user_home = os.path.expanduser(f'~{user}')
    
  3. Crea una instancia de la clase Picamera2 y recupera la configuración predeterminada de previsualización.

    # Crear una instancia de Picamera2
    camera = Picamera2()
    # Recuperar la configuración predeterminada de previsualización
    preview_config = camera.preview_configuration
    
  4. Configura el tamaño y formato de la previsualización de la cámara. El tamaño se establece en 800x600 píxeles y el formato en XRGB8888.

    try:
        # Configurar tamaño y formato de previsualización
        preview_config.size = (800, 600)
        preview_config.format = 'XRGB8888'
    
        ...
    
  5. Inicia la previsualización de la cámara en modo QTGL y luego inicia la cámara.

    try:
        ...
    
        # Iniciar la previsualización de la cámara en modo QTGL
        camera.start_preview(Preview.QTGL)
        # Iniciar la cámara
        camera.start()
    
        ...
    
  6. Captura una imagen con la cámara, guardándola en ~/.

    try:
        ...
    
        # Capturar y guardar una foto en el directorio principal del usuario
        camera.capture_file(f'{user_home}/my_photo.jpg')
    

    Nota

    Puedes usar la función camera.capture() y un bucle for juntos para lograr una captura continua. Utiliza la función delay para ajustar el intervalo de tiempo entre las tomas.

    for i in 5:
        camera.capture(f'{user_home}/my_photo%s.jpg' % i)
    
  7. Este bloque de código maneja una interrupción de teclado (como Ctrl+C) deteniendo la previsualización de la cámara. La declaración pass se usa para manejar la excepción sin hacer nada más.

    except KeyboardInterrupt:
        # Detener la previsualización de la cámara si ocurre una interrupción de teclado (por ejemplo, Ctrl+C)
        camera.stop_preview()
        pass