6.2 KiB
Ta et bilde - Virtuell IoT-maskinvare
I denne delen av leksjonen skal du legge til en kamerasensor til din virtuelle IoT-enhet og lese bilder fra den.
Maskinvare
Den virtuelle IoT-enheten vil bruke et simulert kamera som sender bilder enten fra filer eller fra webkameraet ditt.
Legg til kameraet i CounterFit
For å bruke et virtuelt kamera, må du legge til ett i CounterFit-appen.
Oppgave - legg til kameraet i CounterFit
Legg til kameraet i CounterFit-appen.
-
Opprett en ny Python-app på datamaskinen din i en mappe kalt
fruit-quality-detector
med en enkelt fil kaltapp.py
og et Python-virtuelt miljø, og legg til CounterFit pip-pakkene.⚠️ Du kan se instruksjonene for å opprette og sette opp et CounterFit Python-prosjekt i leksjon 1 hvis nødvendig.
-
Installer en ekstra Pip-pakke for å installere en CounterFit shim som kan kommunisere med kamerasensorer ved å simulere noe av Picamera Pip-pakken. Sørg for at du installerer dette fra en terminal med det virtuelle miljøet aktivert.
pip install counterfit-shims-picamera
-
Sørg for at CounterFit-nettappen kjører.
-
Opprett et kamera:
-
I boksen Create sensor i Sensors-panelet, åpne rullegardinmenyen Sensor type og velg Camera.
-
Sett Name til
Picamera
. -
Velg Add-knappen for å opprette kameraet.
Kameraet vil bli opprettet og vises i sensorlisten.
-
Programmer kameraet
Den virtuelle IoT-enheten kan nå programmeres til å bruke det virtuelle kameraet.
Oppgave - programmer kameraet
Programmer enheten.
-
Sørg for at
fruit-quality-detector
-appen er åpen i VS Code. -
Åpne filen
app.py
. -
Legg til følgende kode øverst i
app.py
for å koble appen til CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Legg til følgende kode i
app.py
-filen din:import io from counterfit_shims_picamera import PiCamera
Denne koden importerer noen nødvendige biblioteker, inkludert
PiCamera
-klassen fra counterfit_shims_picamera-biblioteket. -
Legg til følgende kode under dette for å initialisere kameraet:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Denne koden oppretter et PiCamera-objekt og setter oppløsningen til 640x480. Selv om høyere oppløsninger støttes, fungerer bildegjenkjenneren med mye mindre bilder (227x227), så det er ikke nødvendig å ta og sende større bilder.
Linjen
camera.rotation = 0
setter rotasjonen av bildet i grader. Hvis du trenger å rotere bildet fra webkameraet eller filen, kan du justere dette etter behov. For eksempel, hvis du vil endre bildet av en banan på et webkamera i liggende modus til stående, settcamera.rotation = 90
. -
Legg til følgende kode under dette for å fange bildet som binære data:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Denne koden oppretter et
BytesIO
-objekt for å lagre binære data. Bildet leses fra kameraet som en JPEG-fil og lagres i dette objektet. Dette objektet har en posisjonsindikator for å vite hvor det er i dataene slik at mer data kan skrives til slutten om nødvendig, så linjenimage.seek(0)
flytter denne posisjonen tilbake til starten slik at alle dataene kan leses senere. -
Under dette, legg til følgende for å lagre bildet til en fil:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Denne koden åpner en fil kalt
image.jpg
for skriving, deretter leser den alle dataene fraBytesIO
-objektet og skriver dem til filen.💁 Du kan fange bildet direkte til en fil i stedet for et
BytesIO
-objekt ved å sende filnavnet tilcamera.capture
-kallet. Grunnen til å brukeBytesIO
-objektet er at du senere i denne leksjonen kan sende bildet til bildegjenkjenneren din. -
Konfigurer bildet som kameraet i CounterFit vil fange. Du kan enten sette Source til File, deretter laste opp en bildefil, eller sette Source til WebCam, og bilder vil bli tatt fra webkameraet ditt. Sørg for at du velger Set-knappen etter å ha valgt et bilde eller webkameraet ditt.
-
Et bilde vil bli tatt og lagret som
image.jpg
i den gjeldende mappen. Du vil se denne filen i VS Code-utforskeren. Velg filen for å se bildet. Hvis det trenger rotasjon, oppdater linjencamera.rotation = 0
etter behov og ta et nytt bilde.
💁 Du finner denne koden i code-camera/virtual-iot-device-mappen.
😀 Kameraet ditt ble programmert med suksess!
Ansvarsfraskrivelse:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten Co-op Translator. Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.