6.7 KiB
Captura una imagen - Hardware IoT Virtual
En esta parte de la lección, agregarás un sensor de cámara a tu dispositivo IoT virtual y leerás imágenes desde él.
Hardware
El dispositivo IoT virtual usará una cámara simulada que envía imágenes desde archivos o desde tu cámara web.
Agregar la cámara a CounterFit
Para usar una cámara virtual, necesitas agregar una a la aplicación CounterFit.
Tarea - agregar la cámara a CounterFit
Agrega la cámara a la aplicación CounterFit.
-
Crea una nueva aplicación en Python en tu computadora dentro de una carpeta llamada
fruit-quality-detector
con un único archivo llamadoapp.py
y un entorno virtual de Python, y agrega los paquetes pip de CounterFit.⚠️ Puedes consultar las instrucciones para crear y configurar un proyecto de Python con CounterFit en la lección 1 si es necesario.
-
Instala un paquete adicional de Pip para agregar un shim de CounterFit que pueda comunicarse con sensores de cámara simulando algunas funciones del paquete Picamera Pip. Asegúrate de instalarlo desde una terminal con el entorno virtual activado.
pip install counterfit-shims-picamera
-
Asegúrate de que la aplicación web de CounterFit esté en ejecución.
-
Crea una cámara:
-
En el cuadro Create sensor del panel Sensors, despliega el menú Sensor type y selecciona Camera.
-
Establece el Name como
Picamera
. -
Selecciona el botón Add para crear la cámara.
La cámara será creada y aparecerá en la lista de sensores.
-
Programar la cámara
El dispositivo IoT virtual ahora puede ser programado para usar la cámara virtual.
Tarea - programar la cámara
Programa el dispositivo.
-
Asegúrate de que la aplicación
fruit-quality-detector
esté abierta en VS Code. -
Abre el archivo
app.py
. -
Agrega el siguiente código al inicio de
app.py
para conectar la aplicación a CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Agrega el siguiente código a tu archivo
app.py
:import io from counterfit_shims_picamera import PiCamera
Este código importa algunas bibliotecas necesarias, incluyendo la clase
PiCamera
de la biblioteca counterfit_shims_picamera. -
Agrega el siguiente código debajo de este para inicializar la cámara:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Este código crea un objeto PiCamera, establece la resolución en 640x480. Aunque se admiten resoluciones más altas, el clasificador de imágenes funciona con imágenes mucho más pequeñas (227x227), por lo que no es necesario capturar y enviar imágenes más grandes.
La línea
camera.rotation = 0
establece la rotación de la imagen en grados. Si necesitas rotar la imagen de la cámara web o del archivo, ajusta este valor según sea necesario. Por ejemplo, si deseas cambiar la imagen de un plátano en una cámara web en modo horizontal a modo vertical, establececamera.rotation = 90
. -
Agrega el siguiente código debajo de este para capturar la imagen como datos binarios:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Este código crea un objeto
BytesIO
para almacenar datos binarios. La imagen se lee desde la cámara como un archivo JPEG y se almacena en este objeto. Este objeto tiene un indicador de posición para saber dónde está en los datos, de modo que se puedan escribir más datos al final si es necesario. La líneaimage.seek(0)
mueve esta posición al inicio para que todos los datos puedan leerse más tarde. -
Debajo de esto, agrega lo siguiente para guardar la imagen en un archivo:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Este código abre un archivo llamado
image.jpg
para escritura, luego lee todos los datos del objetoBytesIO
y los escribe en el archivo.💁 Puedes capturar la imagen directamente en un archivo en lugar de un objeto
BytesIO
pasando el nombre del archivo a la llamadacamera.capture
. La razón para usar el objetoBytesIO
es que más adelante en esta lección podrás enviar la imagen a tu clasificador de imágenes. -
Configura la imagen que la cámara en CounterFit capturará. Puedes establecer la Source como File, luego subir un archivo de imagen, o establecer la Source como WebCam, y las imágenes se capturarán desde tu cámara web. Asegúrate de seleccionar el botón Set después de elegir una imagen o tu cámara web.
-
Se capturará una imagen y se guardará como
image.jpg
en la carpeta actual. Verás este archivo en el explorador de VS Code. Selecciona el archivo para ver la imagen. Si necesita rotación, actualiza la líneacamera.rotation = 0
según sea necesario y toma otra foto.
💁 Puedes encontrar este código en la carpeta code-camera/virtual-iot-device.
😀 ¡Tu programa de cámara fue un éxito!
Descargo de responsabilidad:
Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.