6.4 KiB
Zachytenie obrázku - Virtuálny IoT hardvér
V tejto časti lekcie pridáte k svojmu virtuálnemu IoT zariadeniu kamerový senzor a prečítate z neho obrázky.
Hardvér
Virtuálne IoT zariadenie bude používať simulovanú kameru, ktorá posiela obrázky buď zo súborov, alebo z vašej webkamery.
Pridanie kamery do CounterFit
Ak chcete použiť virtuálnu kameru, musíte ju pridať do aplikácie CounterFit.
Úloha - pridanie kamery do CounterFit
Pridajte kameru do aplikácie CounterFit.
-
Vytvorte novú Python aplikáciu na svojom počítači v priečinku s názvom
fruit-quality-detector
s jediným súboromapp.py
a Python virtuálnym prostredím. Pridajte balíčky CounterFit cez pip.⚠️ Ak potrebujete, môžete sa odvolať na pokyny na vytvorenie a nastavenie CounterFit Python projektu v lekcii 1.
-
Nainštalujte ďalší balíček cez pip na inštaláciu CounterFit shim, ktorý dokáže komunikovať s kamerovými senzormi simulovaním niektorých funkcií Picamera Pip balíčka. Uistite sa, že inštalujete tento balíček z terminálu s aktivovaným virtuálnym prostredím.
pip install counterfit-shims-picamera
-
Uistite sa, že webová aplikácia CounterFit je spustená.
-
Vytvorte kameru:
-
V poli Create sensor v paneli Sensors rozbaľte pole Sensor type a vyberte Camera.
-
Nastavte Name na
Picamera
. -
Vyberte tlačidlo Add, aby ste vytvorili kameru.
Kamera bude vytvorená a zobrazí sa v zozname senzorov.
-
Naprogramovanie kamery
Virtuálne IoT zariadenie teraz môže byť naprogramované na používanie virtuálnej kamery.
Úloha - naprogramovanie kamery
Naprogramujte zariadenie.
-
Uistite sa, že aplikácia
fruit-quality-detector
je otvorená vo VS Code. -
Otvorte súbor
app.py
. -
Pridajte nasledujúci kód na začiatok súboru
app.py
, aby ste pripojili aplikáciu k CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Pridajte nasledujúci kód do súboru
app.py
:import io from counterfit_shims_picamera import PiCamera
Tento kód importuje niektoré potrebné knižnice, vrátane triedy
PiCamera
z knižnice counterfit_shims_picamera. -
Pridajte nasledujúci kód pod tento na inicializáciu kamery:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Tento kód vytvorí objekt PiCamera a nastaví rozlíšenie na 640x480. Aj keď sú podporované vyššie rozlíšenia, klasifikátor obrázkov pracuje s oveľa menšími obrázkami (227x227), takže nie je potrebné zachytávať a posielať väčšie obrázky.
Riadok
camera.rotation = 0
nastavuje rotáciu obrázku v stupňoch. Ak potrebujete otočiť obrázok z webkamery alebo súboru, nastavte túto hodnotu podľa potreby. Napríklad, ak chcete zmeniť obrázok banánu na webkamere v režime na šírku na režim na výšku, nastavtecamera.rotation = 90
. -
Pridajte nasledujúci kód pod tento na zachytenie obrázku ako binárnych dát:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Tento kód vytvorí objekt
BytesIO
na uloženie binárnych dát. Obrázok sa načíta z kamery ako JPEG súbor a uloží sa do tohto objektu. Tento objekt má ukazovateľ polohy, ktorý určuje, kde sa nachádza v dátach, aby bolo možné neskôr zapisovať ďalšie dáta. Riadokimage.seek(0)
presunie tento ukazovateľ späť na začiatok, aby bolo možné neskôr prečítať všetky dáta. -
Pod tento kód pridajte nasledujúci kód na uloženie obrázku do súboru:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Tento kód otvorí súbor s názvom
image.jpg
na zápis, potom prečíta všetky dáta z objektuBytesIO
a zapíše ich do súboru.💁 Obrázok môžete zachytiť priamo do súboru namiesto objektu
BytesIO
tým, že názov súboru odovzdáte volaniucamera.capture
. Dôvodom použitia objektuBytesIO
je, že neskôr v tejto lekcii môžete obrázok poslať do klasifikátora obrázkov. -
Nastavte obrázok, ktorý kamera v CounterFit zachytí. Môžete nastaviť Source na File a nahrať obrázkový súbor, alebo nastaviť Source na WebCam, a obrázky budú zachytávané z vašej webkamery. Uistite sa, že po výbere obrázku alebo webkamery stlačíte tlačidlo Set.
-
Obrázok bude zachytený a uložený ako
image.jpg
v aktuálnom priečinku. Tento súbor uvidíte v prieskumníkovi VS Code. Vyberte súbor, aby ste si obrázok prezreli. Ak je potrebné rotovať, aktualizujte riadokcamera.rotation = 0
podľa potreby a urobte ďalší obrázok.
💁 Tento kód nájdete v priečinku code-camera/virtual-iot-device.
😀 Programovanie vašej kamery bolo úspešné!
Upozornenie:
Tento dokument bol preložený pomocou služby na automatický preklad Co-op Translator. Hoci sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nezodpovedáme za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.