9.8 KiB
Заснемане на изображение - Виртуален IoT хардуер
В тази част от урока ще добавите камера сензор към вашето виртуално IoT устройство и ще четете изображения от него.
Хардуер
Виртуалното IoT устройство ще използва симулирана камера, която изпраща изображения или от файлове, или от вашата уеб камера.
Добавяне на камера към CounterFit
За да използвате виртуална камера, трябва да добавите такава към приложението CounterFit.
Задача - добавяне на камера към CounterFit
Добавете камерата към приложението CounterFit.
-
Създайте ново Python приложение на вашия компютър в папка, наречена
fruit-quality-detector
, с един файл, нареченapp.py
, и Python виртуална среда, и добавете CounterFit pip пакетите.⚠️ Можете да се обърнете към инструкциите за създаване и настройка на CounterFit Python проект в урок 1, ако е необходимо.
-
Инсталирайте допълнителен Pip пакет, за да добавите CounterFit shim, който може да комуникира с камера сензори, като симулира някои от Picamera Pip пакета. Уверете се, че го инсталирате от терминал с активирана виртуална среда.
pip install counterfit-shims-picamera
-
Уверете се, че CounterFit уеб приложението работи.
-
Създайте камера:
-
В полето Create sensor в панела Sensors, отворете падащото меню Sensor type и изберете Camera.
-
Задайте Name на
Picamera
. -
Изберете бутона Add, за да създадете камерата.
Камерата ще бъде създадена и ще се появи в списъка със сензори.
-
Програмиране на камерата
Виртуалното IoT устройство вече може да бъде програмирано да използва виртуалната камера.
Задача - програмиране на камерата
Програмирайте устройството.
-
Уверете се, че приложението
fruit-quality-detector
е отворено в VS Code. -
Отворете файла
app.py
. -
Добавете следния код в началото на
app.py
, за да свържете приложението с CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Добавете следния код във файла
app.py
:import io from counterfit_shims_picamera import PiCamera
Този код импортира някои необходими библиотеки, включително класа
PiCamera
от библиотеката counterfit_shims_picamera. -
Добавете следния код под този, за да инициализирате камерата:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Този код създава обект PiCamera и задава резолюцията на 640x480. Въпреки че се поддържат по-високи резолюции, класификаторът на изображения работи с много по-малки изображения (227x227), така че няма нужда да се заснемат и изпращат по-големи изображения.
Редът
camera.rotation = 0
задава ротацията на изображението в градуси. Ако трябва да завъртите изображението от уеб камерата или файла, задайте това според нуждите. Например, ако искате да промените изображението на банан от уеб камера в пейзажен режим на портретен, задайтеcamera.rotation = 90
. -
Добавете следния код под този, за да заснемете изображението като бинарни данни:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Този код създава обект
BytesIO
, за да съхранява бинарни данни. Изображението се чете от камерата като JPEG файл и се съхранява в този обект. Този обект има индикатор за позиция, който показва къде се намира в данните, така че да може да се добавят още данни в края, ако е необходимо. Редътimage.seek(0)
премества тази позиция обратно в началото, за да могат всички данни да бъдат прочетени по-късно. -
Под този код добавете следното, за да запазите изображението във файл:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Този код отваря файл, наречен
image.jpg
, за запис, след което чете всички данни от обектаBytesIO
и ги записва във файла.💁 Можете да заснемете изображението директно във файл, вместо в обект
BytesIO
, като подадете името на файла на извикванетоcamera.capture
. Причината за използването на обектаBytesIO
е, че по-късно в този урок можете да изпратите изображението на вашия класификатор на изображения. -
Конфигурирайте изображението, което камерата в CounterFit ще заснеме. Можете да зададете Source на File, след което да качите файл с изображение, или да зададете Source на WebCam, и изображенията ще бъдат заснемани от вашата уеб камера. Уверете се, че сте избрали бутона Set, след като изберете снимка или уеб камера.
-
Изображение ще бъде заснето и запазено като
image.jpg
в текущата папка. Ще видите този файл в Explorer на VS Code. Изберете файла, за да видите изображението. Ако е необходимо завъртане, актуализирайте редаcamera.rotation = 0
, както е необходимо, и направете нова снимка.
💁 Можете да намерите този код в папката code-camera/virtual-iot-device.
😀 Вашата програма за камерата беше успешна!
Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод.