You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ru/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md

9.8 KiB

Захват изображения - Виртуальное IoT-устройство

В этой части урока вы добавите датчик камеры к вашему виртуальному IoT-устройству и научитесь считывать изображения с него.

Оборудование

Виртуальное IoT-устройство будет использовать симулированную камеру, которая отправляет изображения либо из файлов, либо с вашей веб-камеры.

Добавление камеры в CounterFit

Чтобы использовать виртуальную камеру, необходимо добавить её в приложение CounterFit.

Задание - добавьте камеру в CounterFit

Добавьте камеру в приложение CounterFit.

  1. Создайте новое Python-приложение на вашем компьютере в папке fruit-quality-detector с единственным файлом app.py и виртуальной средой Python. Установите pip-пакеты для CounterFit.

    ⚠️ Вы можете обратиться к инструкциям по созданию и настройке Python-проекта для CounterFit в уроке 1, если это необходимо.

  2. Установите дополнительный pip-пакет для установки CounterFit shim, который может взаимодействовать с датчиками камеры, симулируя некоторые функции пакета Picamera. Убедитесь, что установка выполняется из терминала с активированной виртуальной средой.

    pip install counterfit-shims-picamera
    
  3. Убедитесь, что веб-приложение CounterFit запущено.

  4. Создайте камеру:

    1. В поле Create sensor на панели Sensors выберите тип датчика Camera из выпадающего списка.

    2. Установите Name как Picamera.

    3. Нажмите кнопку Add, чтобы создать камеру.

    Настройки камеры

    Камера будет создана и появится в списке датчиков.

    Созданная камера

Программирование камеры

Теперь виртуальное IoT-устройство можно запрограммировать для использования виртуальной камеры.

Задание - программирование камеры

Программируйте устройство.

  1. Убедитесь, что приложение fruit-quality-detector открыто в VS Code.

  2. Откройте файл app.py.

  3. Добавьте следующий код в начало файла app.py, чтобы подключить приложение к CounterFit:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
    
  4. Добавьте следующий код в файл app.py:

    import io
    from counterfit_shims_picamera import PiCamera
    

    Этот код импортирует необходимые библиотеки, включая класс PiCamera из библиотеки counterfit_shims_picamera.

  5. Добавьте следующий код ниже, чтобы инициализировать камеру:

    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.rotation = 0
    

    Этот код создаёт объект PiCamera и устанавливает разрешение 640x480. Хотя поддерживаются более высокие разрешения, классификатор изображений работает с гораздо меньшими изображениями (227x227), поэтому нет необходимости захватывать и отправлять изображения большего размера.

    Строка camera.rotation = 0 задаёт угол поворота изображения в градусах. Если вам нужно повернуть изображение с веб-камеры или файла, настройте это значение. Например, чтобы изменить изображение банана с веб-камеры в альбомной ориентации на портретную, установите camera.rotation = 90.

  6. Добавьте следующий код ниже, чтобы захватить изображение в виде бинарных данных:

    image = io.BytesIO()
    camera.capture(image, 'jpeg')
    image.seek(0)
    

    Этот код создаёт объект BytesIO для хранения бинарных данных. Изображение считывается с камеры в формате JPEG и сохраняется в этом объекте. У объекта есть индикатор позиции, который показывает, где он находится в данных, чтобы можно было записывать дополнительные данные в конец. Строка image.seek(0) перемещает этот индикатор обратно в начало, чтобы позже можно было считать все данные.

  7. Добавьте следующий код ниже, чтобы сохранить изображение в файл:

    with open('image.jpg', 'wb') as image_file:
        image_file.write(image.read())
    

    Этот код открывает файл с именем image.jpg для записи, затем считывает все данные из объекта BytesIO и записывает их в файл.

    💁 Вы можете захватывать изображение напрямую в файл, передав имя файла в вызов camera.capture. Использование объекта BytesIO позволяет позже в этом уроке отправить изображение в классификатор изображений.

  8. Настройте изображение, которое камера в CounterFit будет захватывать. Вы можете установить Source как File и загрузить файл изображения, либо установить Source как WebCam, чтобы изображения захватывались с вашей веб-камеры. Убедитесь, что вы нажали кнопку Set после выбора изображения или веб-камеры.

    CounterFit с файлом в качестве источника изображения и веб-камерой, показывающей человека с бананом в предварительном просмотре

  9. Изображение будет захвачено и сохранено как image.jpg в текущей папке. Вы увидите этот файл в обозревателе VS Code. Выберите файл, чтобы просмотреть изображение. Если требуется поворот, обновите строку camera.rotation = 0 и сделайте ещё один снимок.

💁 Вы можете найти этот код в папке code-camera/virtual-iot-device.

😀 Программа для камеры успешно выполнена!


Отказ от ответственности:
Этот документ был переведен с использованием сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия обеспечить точность, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.