9.3 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
у тренутној фасцикли. Видећете овај фајл у VS Code експлореру. Изаберите фајл да бисте видели слику. Ако је потребно ротирање, ажурирајте линијуcamera.rotation = 0
како је потребно и снимите нову слику.
💁 Овај код можете пронаћи у фасцикли code-camera/virtual-iot-device.
😀 Ваш програм за камеру је успешно завршен!
Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако се трудимо да превод буде тачан, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.