6.5 KiB
Przechwytywanie obrazu - Wirtualny sprzęt IoT
W tej części lekcji dodasz czujnik kamery do swojego wirtualnego urządzenia IoT i odczytasz z niego obrazy.
Sprzęt
Wirtualne urządzenie IoT będzie korzystać z symulowanej kamery, która przesyła obrazy z plików lub z Twojej kamery internetowej.
Dodanie kamery do CounterFit
Aby używać wirtualnej kamery, musisz dodać ją do aplikacji CounterFit.
Zadanie - dodanie kamery do CounterFit
Dodaj kamerę do aplikacji CounterFit.
-
Utwórz nową aplikację w Pythonie na swoim komputerze w folderze o nazwie
fruit-quality-detector
z jednym plikiem o nazwieapp.py
oraz wirtualnym środowiskiem Pythona, a następnie dodaj pakiety pip dla CounterFit.⚠️ Możesz odwołać się do instrukcji tworzenia i konfiguracji projektu CounterFit w Pythonie w lekcji 1, jeśli to konieczne.
-
Zainstaluj dodatkowy pakiet Pip, który umożliwia zainstalowanie shima CounterFit, symulującego niektóre funkcje pakietu Picamera Pip package. Upewnij się, że instalujesz go z terminala z aktywowanym wirtualnym środowiskiem.
pip install counterfit-shims-picamera
-
Upewnij się, że aplikacja webowa CounterFit jest uruchomiona.
-
Utwórz kamerę:
-
W polu Create sensor w panelu Sensors rozwiń listę Sensor type i wybierz Camera.
-
Ustaw Name na
Picamera
. -
Wybierz przycisk Add, aby utworzyć kamerę.
Kamera zostanie utworzona i pojawi się na liście czujników.
-
Programowanie kamery
Wirtualne urządzenie IoT może teraz zostać zaprogramowane do korzystania z wirtualnej kamery.
Zadanie - programowanie kamery
Zaprogramuj urządzenie.
-
Upewnij się, że aplikacja
fruit-quality-detector
jest otwarta w VS Code. -
Otwórz plik
app.py
. -
Dodaj poniższy kod na początku pliku
app.py
, aby połączyć aplikację z CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Dodaj poniższy kod do pliku
app.py
:import io from counterfit_shims_picamera import PiCamera
Ten kod importuje potrzebne biblioteki, w tym klasę
PiCamera
z biblioteki counterfit_shims_picamera. -
Dodaj poniższy kod poniżej, aby zainicjalizować kamerę:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Ten kod tworzy obiekt PiCamera i ustawia rozdzielczość na 640x480. Chociaż obsługiwane są wyższe rozdzielczości, klasyfikator obrazów działa na znacznie mniejszych obrazach (227x227), więc nie ma potrzeby przechwytywania i przesyłania większych obrazów.
Linia
camera.rotation = 0
ustawia obrót obrazu w stopniach. Jeśli musisz obrócić obraz z kamery internetowej lub pliku, ustaw tę wartość odpowiednio. Na przykład, jeśli chcesz zmienić obraz banana z kamery internetowej w trybie poziomym na tryb pionowy, ustawcamera.rotation = 90
. -
Dodaj poniższy kod poniżej, aby przechwycić obraz jako dane binarne:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Ten kod tworzy obiekt
BytesIO
do przechowywania danych binarnych. Obraz jest odczytywany z kamery jako plik JPEG i przechowywany w tym obiekcie. Obiekt ten ma wskaźnik pozycji, który wskazuje, gdzie znajdują się dane, aby można było zapisać więcej danych na końcu, jeśli to konieczne, więc liniaimage.seek(0)
przesuwa ten wskaźnik z powrotem na początek, aby później można było odczytać wszystkie dane. -
Poniżej dodaj następujący kod, aby zapisać obraz do pliku:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Ten kod otwiera plik o nazwie
image.jpg
do zapisu, następnie odczytuje wszystkie dane z obiektuBytesIO
i zapisuje je do pliku.💁 Możesz przechwycić obraz bezpośrednio do pliku zamiast do obiektu
BytesIO
, przekazując nazwę pliku do wywołaniacamera.capture
. Powodem użycia obiektuBytesIO
jest to, że później w tej lekcji możesz przesłać obraz do swojego klasyfikatora obrazów. -
Skonfiguruj obraz, który kamera w CounterFit będzie przechwytywać. Możesz ustawić Source na File, a następnie przesłać plik obrazu, lub ustawić Source na WebCam, aby obrazy były przechwytywane z Twojej kamery internetowej. Upewnij się, że wybierasz przycisk Set po wybraniu obrazu lub kamery internetowej.
-
Obraz zostanie przechwycony i zapisany jako
image.jpg
w bieżącym folderze. Zobaczysz ten plik w eksploratorze VS Code. Wybierz plik, aby wyświetlić obraz. Jeśli wymaga obrotu, zaktualizuj linięcamera.rotation = 0
zgodnie z potrzebami i zrób kolejne zdjęcie.
💁 Ten kod znajdziesz w folderze code-camera/virtual-iot-device.
😀 Twój program obsługujący kamerę zakończył się sukcesem!
Zastrzeżenie:
Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI Co-op Translator. Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.