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

126 lines
9.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "3ba7150ffc4a6999f6c3cfb4906ec7df",
"translation_date": "2025-08-26T21:52:20+00:00",
"source_file": "4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md",
"language_code": "ru"
}
-->
# Захват изображения - Виртуальное IoT-устройство
В этой части урока вы добавите датчик камеры к вашему виртуальному IoT-устройству и научитесь считывать изображения с него.
## Оборудование
Виртуальное IoT-устройство будет использовать симулированную камеру, которая отправляет изображения либо из файлов, либо с вашей веб-камеры.
### Добавление камеры в CounterFit
Чтобы использовать виртуальную камеру, необходимо добавить её в приложение CounterFit.
#### Задание - добавьте камеру в CounterFit
Добавьте камеру в приложение CounterFit.
1. Создайте новое Python-приложение на вашем компьютере в папке `fruit-quality-detector` с единственным файлом `app.py` и виртуальной средой Python. Установите pip-пакеты для CounterFit.
> ⚠️ Вы можете обратиться к [инструкциям по созданию и настройке Python-проекта для CounterFit в уроке 1, если это необходимо](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
1. Установите дополнительный pip-пакет для установки CounterFit shim, который может взаимодействовать с датчиками камеры, симулируя некоторые функции [пакета Picamera](https://pypi.org/project/picamera/). Убедитесь, что установка выполняется из терминала с активированной виртуальной средой.
```sh
pip install counterfit-shims-picamera
```
1. Убедитесь, что веб-приложение CounterFit запущено.
1. Создайте камеру:
1. В поле *Create sensor* на панели *Sensors* выберите тип датчика *Camera* из выпадающего списка.
1. Установите *Name* как `Picamera`.
1. Нажмите кнопку **Add**, чтобы создать камеру.
![Настройки камеры](../../../../../translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.ru.png)
Камера будет создана и появится в списке датчиков.
![Созданная камера](../../../../../translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.ru.png)
## Программирование камеры
Теперь виртуальное IoT-устройство можно запрограммировать для использования виртуальной камеры.
### Задание - программирование камеры
Программируйте устройство.
1. Убедитесь, что приложение `fruit-quality-detector` открыто в VS Code.
1. Откройте файл `app.py`.
1. Добавьте следующий код в начало файла `app.py`, чтобы подключить приложение к CounterFit:
```python
from counterfit_connection import CounterFitConnection
CounterFitConnection.init('127.0.0.1', 5000)
```
1. Добавьте следующий код в файл `app.py`:
```python
import io
from counterfit_shims_picamera import PiCamera
```
Этот код импортирует необходимые библиотеки, включая класс `PiCamera` из библиотеки counterfit_shims_picamera.
1. Добавьте следующий код ниже, чтобы инициализировать камеру:
```python
camera = PiCamera()
camera.resolution = (640, 480)
camera.rotation = 0
```
Этот код создаёт объект PiCamera и устанавливает разрешение 640x480. Хотя поддерживаются более высокие разрешения, классификатор изображений работает с гораздо меньшими изображениями (227x227), поэтому нет необходимости захватывать и отправлять изображения большего размера.
Строка `camera.rotation = 0` задаёт угол поворота изображения в градусах. Если вам нужно повернуть изображение с веб-камеры или файла, настройте это значение. Например, чтобы изменить изображение банана с веб-камеры в альбомной ориентации на портретную, установите `camera.rotation = 90`.
1. Добавьте следующий код ниже, чтобы захватить изображение в виде бинарных данных:
```python
image = io.BytesIO()
camera.capture(image, 'jpeg')
image.seek(0)
```
Этот код создаёт объект `BytesIO` для хранения бинарных данных. Изображение считывается с камеры в формате JPEG и сохраняется в этом объекте. У объекта есть индикатор позиции, который показывает, где он находится в данных, чтобы можно было записывать дополнительные данные в конец. Строка `image.seek(0)` перемещает этот индикатор обратно в начало, чтобы позже можно было считать все данные.
1. Добавьте следующий код ниже, чтобы сохранить изображение в файл:
```python
with open('image.jpg', 'wb') as image_file:
image_file.write(image.read())
```
Этот код открывает файл с именем `image.jpg` для записи, затем считывает все данные из объекта `BytesIO` и записывает их в файл.
> 💁 Вы можете захватывать изображение напрямую в файл, передав имя файла в вызов `camera.capture`. Использование объекта `BytesIO` позволяет позже в этом уроке отправить изображение в классификатор изображений.
1. Настройте изображение, которое камера в CounterFit будет захватывать. Вы можете установить *Source* как *File* и загрузить файл изображения, либо установить *Source* как *WebCam*, чтобы изображения захватывались с вашей веб-камеры. Убедитесь, что вы нажали кнопку **Set** после выбора изображения или веб-камеры.
![CounterFit с файлом в качестве источника изображения и веб-камерой, показывающей человека с бананом в предварительном просмотре](../../../../../translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.ru.png)
1. Изображение будет захвачено и сохранено как `image.jpg` в текущей папке. Вы увидите этот файл в обозревателе VS Code. Выберите файл, чтобы просмотреть изображение. Если требуется поворот, обновите строку `camera.rotation = 0` и сделайте ещё один снимок.
> 💁 Вы можете найти этот код в папке [code-camera/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-camera/virtual-iot-device).
😀 Программа для камеры успешно выполнена!
---
**Отказ от ответственности**:
Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.