9.8 KiB
Захват изображения - Виртуальное IoT-устройство
В этой части урока вы добавите датчик камеры к вашему виртуальному IoT-устройству и научитесь считывать изображения с него.
Оборудование
Виртуальное IoT-устройство будет использовать симулированную камеру, которая отправляет изображения либо из файлов, либо с вашей веб-камеры.
Добавление камеры в CounterFit
Чтобы использовать виртуальную камеру, необходимо добавить её в приложение CounterFit.
Задание - добавьте камеру в CounterFit
Добавьте камеру в приложение CounterFit.
-
Создайте новое Python-приложение на вашем компьютере в папке
fruit-quality-detector
с единственным файломapp.py
и виртуальной средой Python. Установите pip-пакеты для CounterFit.⚠️ Вы можете обратиться к инструкциям по созданию и настройке Python-проекта для CounterFit в уроке 1, если это необходимо.
-
Установите дополнительный pip-пакет для установки CounterFit shim, который может взаимодействовать с датчиками камеры, симулируя некоторые функции пакета Picamera. Убедитесь, что установка выполняется из терминала с активированной виртуальной средой.
pip install counterfit-shims-picamera
-
Убедитесь, что веб-приложение CounterFit запущено.
-
Создайте камеру:
-
В поле Create sensor на панели Sensors выберите тип датчика 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
и записывает их в файл.💁 Вы можете захватывать изображение напрямую в файл, передав имя файла в вызов
camera.capture
. Использование объектаBytesIO
позволяет позже в этом уроке отправить изображение в классификатор изображений. -
Настройте изображение, которое камера в CounterFit будет захватывать. Вы можете установить Source как File и загрузить файл изображения, либо установить Source как WebCam, чтобы изображения захватывались с вашей веб-камеры. Убедитесь, что вы нажали кнопку Set после выбора изображения или веб-камеры.
-
Изображение будет захвачено и сохранено как
image.jpg
в текущей папке. Вы увидите этот файл в обозревателе VS Code. Выберите файл, чтобы просмотреть изображение. Если требуется поворот, обновите строкуcamera.rotation = 0
и сделайте ещё один снимок.
💁 Вы можете найти этот код в папке code-camera/virtual-iot-device.
😀 Программа для камеры успешно выполнена!
Отказ от ответственности:
Этот документ был переведен с использованием сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия обеспечить точность, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.