9.1 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. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.


