6.7 KiB
Maak een foto - Virtuele IoT-hardware
In dit deel van de les voeg je een camerasensor toe aan je virtuele IoT-apparaat en lees je afbeeldingen ervan uit.
Hardware
Het virtuele IoT-apparaat gebruikt een gesimuleerde camera die afbeeldingen verzendt vanuit bestanden of vanaf je webcam.
Voeg de camera toe aan CounterFit
Om een virtuele camera te gebruiken, moet je er een toevoegen aan de CounterFit-app.
Taak - voeg de camera toe aan CounterFit
Voeg de camera toe aan de CounterFit-app.
-
Maak een nieuwe Python-app op je computer in een map genaamd
fruit-quality-detector
met een enkel bestand genaamdapp.py
en een Python-virtuele omgeving, en voeg de CounterFit pip-pakketten toe. -
Installeer een extra Pip-pakket om een CounterFit shim te installeren die kan communiceren met camerasensoren door enkele functies van het Picamera Pip-pakket te simuleren. Zorg ervoor dat je dit installeert vanuit een terminal met de virtuele omgeving geactiveerd.
pip install counterfit-shims-picamera
-
Zorg ervoor dat de CounterFit-webapp actief is.
-
Maak een camera aan:
-
In het Create sensor-vak in het Sensors-paneel, open het dropdownmenu Sensor type en selecteer Camera.
-
Stel de Name in op
Picamera
. -
Selecteer de knop Add om de camera aan te maken.
De camera wordt aangemaakt en verschijnt in de sensorenlijst.
-
Programmeer de camera
Het virtuele IoT-apparaat kan nu worden geprogrammeerd om de virtuele camera te gebruiken.
Taak - programmeer de camera
Programmeur het apparaat.
-
Zorg ervoor dat de
fruit-quality-detector
-app geopend is in VS Code. -
Open het bestand
app.py
. -
Voeg de volgende code toe aan het begin van
app.py
om de app te verbinden met CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Voeg de volgende code toe aan je
app.py
-bestand:import io from counterfit_shims_picamera import PiCamera
Deze code importeert enkele benodigde bibliotheken, waaronder de
PiCamera
-klasse uit de counterfit_shims_picamera-bibliotheek. -
Voeg de volgende code hieronder toe om de camera te initialiseren:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Deze code maakt een PiCamera-object aan en stelt de resolutie in op 640x480. Hoewel hogere resoluties worden ondersteund, werkt de beeldclassificator met veel kleinere afbeeldingen (227x227), dus het is niet nodig om grotere afbeeldingen vast te leggen en te verzenden.
De regel
camera.rotation = 0
stelt de rotatie van de afbeelding in graden in. Als je de afbeelding van de webcam of het bestand moet draaien, stel dit dan dienovereenkomstig in. Bijvoorbeeld, als je een afbeelding van een banaan op een webcam in liggende modus wilt veranderen naar staande modus, stel dancamera.rotation = 90
in. -
Voeg de volgende code hieronder toe om de afbeelding vast te leggen als binaire gegevens:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Deze code maakt een
BytesIO
-object aan om binaire gegevens op te slaan. De afbeelding wordt gelezen van de camera als een JPEG-bestand en opgeslagen in dit object. Dit object heeft een positie-indicator om te weten waar het zich in de gegevens bevindt, zodat er indien nodig meer gegevens aan het einde kunnen worden toegevoegd. De regelimage.seek(0)
verplaatst deze positie terug naar het begin, zodat alle gegevens later kunnen worden gelezen. -
Voeg hieronder het volgende toe om de afbeelding op te slaan in een bestand:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Deze code opent een bestand genaamd
image.jpg
om te schrijven, leest vervolgens alle gegevens uit hetBytesIO
-object en schrijft deze naar het bestand.💁 Je kunt de afbeelding direct vastleggen in een bestand in plaats van in een
BytesIO
-object door de bestandsnaam door te geven aan decamera.capture
-aanroep. De reden om hetBytesIO
-object te gebruiken is zodat je later in deze les de afbeelding naar je beeldclassificator kunt sturen. -
Stel de afbeelding in die de camera in CounterFit zal vastleggen. Je kunt de Source instellen op File en vervolgens een afbeeldingsbestand uploaden, of de Source instellen op WebCam, waarna afbeeldingen worden vastgelegd vanaf je webcam. Zorg ervoor dat je op de knop Set klikt nadat je een afbeelding hebt geselecteerd of je webcam hebt ingesteld.
-
Een afbeelding wordt vastgelegd en opgeslagen als
image.jpg
in de huidige map. Je ziet dit bestand in de VS Code-verkenner. Selecteer het bestand om de afbeelding te bekijken. Als het moet worden gedraaid, pas dan de regelcamera.rotation = 0
aan en maak opnieuw een foto.
💁 Je kunt deze code vinden in de map code-camera/virtual-iot-device.
😀 Je camera-programma is een succes!
Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.