6.4 KiB
Ta en bild - Virtuell IoT-hårdvara
I den här delen av lektionen kommer du att lägga till en kamerasensor till din virtuella IoT-enhet och läsa bilder från den.
Hårdvara
Den virtuella IoT-enheten kommer att använda en simulerad kamera som skickar bilder antingen från filer eller från din webbkamera.
Lägg till kameran i CounterFit
För att använda en virtuell kamera behöver du lägga till en i CounterFit-appen.
Uppgift - lägg till kameran i CounterFit
Lägg till kameran i CounterFit-appen.
-
Skapa en ny Python-app på din dator i en mapp som heter
fruit-quality-detector
med en enda fil som heterapp.py
och en Python-virtuell miljö, och lägg till CounterFit pip-paket.⚠️ Du kan hänvisa till instruktionerna för att skapa och ställa in ett CounterFit Python-projekt i lektion 1 om det behövs.
-
Installera ett extra Pip-paket för att installera en CounterFit-shim som kan kommunicera med kamerasensorer genom att simulera vissa delar av Picamera Pip-paketet. Se till att du installerar detta från en terminal med den virtuella miljön aktiverad.
pip install counterfit-shims-picamera
-
Se till att CounterFit-webbappen körs.
-
Skapa en kamera:
-
I Create sensor-rutan i Sensors-panelen, öppna rullgardinsmenyn Sensor type och välj Camera.
-
Ställ in Name till
Picamera
. -
Välj knappen Add för att skapa kameran.
Kameran kommer att skapas och visas i sensorlistan.
-
Programmera kameran
Den virtuella IoT-enheten kan nu programmeras för att använda den virtuella kameran.
Uppgift - programmera kameran
Programmera enheten.
-
Se till att appen
fruit-quality-detector
är öppen i VS Code. -
Öppna filen
app.py
. -
Lägg till följande kod högst upp i
app.py
för att ansluta appen till CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Lägg till följande kod i din
app.py
-fil:import io from counterfit_shims_picamera import PiCamera
Den här koden importerar några bibliotek som behövs, inklusive klassen
PiCamera
från biblioteket counterfit_shims_picamera. -
Lägg till följande kod under detta för att initiera kameran:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Den här koden skapar ett PiCamera-objekt och ställer in upplösningen till 640x480. Även om högre upplösningar stöds, fungerar bildklassificeraren på mycket mindre bilder (227x227), så det finns ingen anledning att ta och skicka större bilder.
Raden
camera.rotation = 0
ställer in bildens rotation i grader. Om du behöver rotera bilden från webbkameran eller filen, ställ in detta som lämpligt. Till exempel, om du vill ändra bilden av en banan på en webbkamera i liggande läge till stående, ställ incamera.rotation = 90
. -
Lägg till följande kod under detta för att ta bilden som binär data:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Den här koden skapar ett
BytesIO
-objekt för att lagra binär data. Bilden läses från kameran som en JPEG-fil och lagras i detta objekt. Detta objekt har en positionsindikator för att veta var det befinner sig i datan så att mer data kan skrivas till slutet om det behövs, så radenimage.seek(0)
flyttar denna position tillbaka till början så att all data kan läsas senare. -
Lägg till följande kod under detta för att spara bilden till en fil:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Den här koden öppnar en fil som heter
image.jpg
för skrivning, läser sedan all data frånBytesIO
-objektet och skriver det till filen.💁 Du kan ta bilden direkt till en fil istället för ett
BytesIO
-objekt genom att skicka filnamnet tillcamera.capture
-anropet. Anledningen till att användaBytesIO
-objektet är att du senare i denna lektion kan skicka bilden till din bildklassificerare. -
Konfigurera bilden som kameran i CounterFit kommer att ta. Du kan antingen ställa in Source till File, sedan ladda upp en bildfil, eller ställa in Source till WebCam, och bilder kommer att tas från din webbkamera. Se till att du väljer knappen Set efter att ha valt en bild eller din webbkamera.
-
En bild kommer att tas och sparas som
image.jpg
i den aktuella mappen. Du kommer att se denna fil i VS Code explorer. Välj filen för att visa bilden. Om den behöver roteras, uppdatera radencamera.rotation = 0
som nödvändigt och ta en ny bild.
💁 Du kan hitta denna kod i mappen code-camera/virtual-iot-device.
😀 Ditt kameraprogram blev en framgång!
Ansvarsfriskrivning:
Detta dokument har översatts med hjälp av AI-översättningstjänsten Co-op Translator. Även om vi strävar efter noggrannhet, bör det noteras att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som kan uppstå vid användning av denna översättning.