9.5 KiB
Захоплення зображення - Віртуальне IoT обладнання
У цій частині уроку ви додасте сенсор камери до вашого віртуального IoT пристрою та зчитуватимете зображення з нього.
Обладнання
Віртуальний IoT пристрій використовуватиме симульовану камеру, яка надсилатиме зображення або з файлів, або з вашої вебкамери.
Додайте камеру до CounterFit
Щоб використовувати віртуальну камеру, потрібно додати її до додатку CounterFit.
Завдання - додати камеру до CounterFit
Додайте камеру до додатку CounterFit.
-
Створіть новий Python-додаток на вашому комп'ютері у папці
fruit-quality-detector
з одним файломapp.py
та віртуальним середовищем Python, і додайте пакети CounterFit через pip.⚠️ Ви можете звернутися до інструкцій зі створення та налаштування Python-проєкту CounterFit у уроці 1, якщо це необхідно.
-
Встановіть додатковий пакет через pip для встановлення CounterFit shim, який може взаємодіяти з сенсорами камери, симулюючи деякі функції Picamera Pip package. Переконайтеся, що ви встановлюєте це з терміналу, де активоване віртуальне середовище.
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. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.