6.5 KiB
Zachycení obrázku - Virtuální IoT hardware
V této části lekce přidáte kamerový senzor do svého virtuálního IoT zařízení a budete z něj číst obrázky.
Hardware
Virtuální IoT zařízení bude používat simulovanou kameru, která posílá buď obrázky ze souborů, nebo z vaší webové kamery.
Přidání kamery do CounterFit
Pro použití virtuální kamery je potřeba ji přidat do aplikace CounterFit.
Úkol - přidání kamery do CounterFit
Přidejte kameru do aplikace CounterFit.
-
Vytvořte novou Python aplikaci na svém počítači ve složce nazvané
fruit-quality-detector
s jediným souborem nazvanýmapp.py
a Python virtuálním prostředím, a přidejte CounterFit pip balíčky.⚠️ Můžete se podívat na instrukce pro vytvoření a nastavení CounterFit Python projektu v lekci 1, pokud je to potřeba.
-
Nainstalujte další Pip balíček, který přidá CounterFit shim, jenž dokáže komunikovat s kamerovými senzory simulací některých funkcí Picamera Pip balíčku. Ujistěte se, že instalaci provádíte z terminálu s aktivovaným virtuálním prostředím.
pip install counterfit-shims-picamera
-
Ujistěte se, že webová aplikace CounterFit běží.
-
Vytvořte kameru:
-
V poli Create sensor v panelu Sensors rozbalte pole Sensor type a vyberte Camera.
-
Nastavte Name na
Picamera
. -
Vyberte tlačítko Add pro vytvoření kamery.
Kamera bude vytvořena a objeví se v seznamu senzorů.
-
Programování kamery
Virtuální IoT zařízení nyní může být naprogramováno pro použití virtuální kamery.
Úkol - programování kamery
Naprogramujte zařízení.
-
Ujistěte se, že aplikace
fruit-quality-detector
je otevřená ve VS Code. -
Otevřete soubor
app.py
. -
Přidejte následující kód na začátek souboru
app.py
pro připojení aplikace k CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Přidejte následující kód do souboru
app.py
:import io from counterfit_shims_picamera import PiCamera
Tento kód importuje některé potřebné knihovny, včetně třídy
PiCamera
z knihovny counterfit_shims_picamera. -
Přidejte následující kód pod tento pro inicializaci kamery:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Tento kód vytvoří objekt PiCamera, nastaví rozlišení na 640x480. Ačkoliv jsou podporována vyšší rozlišení, klasifikátor obrázků pracuje s mnohem menšími obrázky (227x227), takže není potřeba zachytávat a posílat větší obrázky.
Řádek
camera.rotation = 0
nastavuje rotaci obrázku ve stupních. Pokud potřebujete otočit obrázek z webové kamery nebo souboru, nastavte tuto hodnotu podle potřeby. Například pokud chcete změnit obrázek banánu na webové kameře v režimu na šířku na režim na výšku, nastavtecamera.rotation = 90
. -
Přidejte následující kód pod tento pro zachycení obrázku jako binárních dat:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Tento kód vytvoří objekt
BytesIO
pro uložení binárních dat. Obrázek je přečten z kamery jako JPEG soubor a uložen do tohoto objektu. Tento objekt má ukazatel pozice, který určuje, kde se nachází v datech, aby bylo možné přidávat další data na konec, pokud je to potřeba, takže řádekimage.seek(0)
posune tento ukazatel zpět na začátek, aby bylo možné později přečíst všechna data. -
Pod tento kód přidejte následující pro uložení obrázku do souboru:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Tento kód otevře soubor nazvaný
image.jpg
pro zápis, poté přečte všechna data z objektuBytesIO
a zapíše je do souboru.💁 Obrázek můžete zachytit přímo do souboru místo objektu
BytesIO
předáním názvu souboru do volánícamera.capture
. Důvodem použití objektuBytesIO
je, že později v této lekci můžete obrázek poslat do svého klasifikátoru obrázků. -
Nakonfigurujte obrázek, který kamera v CounterFit zachytí. Můžete buď nastavit Source na File, poté nahrát obrázkový soubor, nebo nastavit Source na WebCam, a obrázky budou zachyceny z vaší webové kamery. Ujistěte se, že po výběru obrázku nebo webové kamery stisknete tlačítko Set.
-
Obrázek bude zachycen a uložen jako
image.jpg
v aktuální složce. Tento soubor uvidíte v průzkumníku VS Code. Vyberte soubor pro zobrazení obrázku. Pokud je potřeba rotace, upravte řádekcamera.rotation = 0
podle potřeby a pořiďte další snímek.
💁 Tento kód najdete ve složce code-camera/virtual-iot-device.
😀 Programování kamery bylo úspěšné!
Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.