# Камеры

Камеры обеспечивают поток изображений, которые видит политика. Каждый бэкенд — OpenCV, Intel RealSense, Reachy 2 — реализует интерфейс `Camera`, поэтому замена оборудования не требует изменения кода, читающего кадры.

См. [Руководство по камерам](../cameras) для выбора и настройки камеры, а также [Камеры и датчики сторонних производителей](../third_party_sensors) для устройств, не входящих в основной набор.

## Камера[[lerobot.cameras.Camera]]

#### lerobot.cameras.Camera[[lerobot.cameras.Camera]]

```python
lerobot.cameras.Camera(config: CameraConfig)
```

[Источник](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L26)

**Параметры:**

fps (float | None) : Настроенные или измеренные кадры в секунду

width (int | None) : Ширина кадра в пикселях

height (int | None) : Высота кадра в пикселях

Базовый класс для реализаций камеры.

Определяет стандартный интерфейс для операций с камерой в различных бэкендах. Подклассы должны реализовать все абстрактные методы.

Управляет базовыми свойствами камеры (FPS, разрешение) и основными операциями:
- Подключение/отключение
- Захват кадров (синхронный/асинхронный/последний)

#### подключить[[lerobot.cameras.Camera.connect]]

```python
connect(warmup: bool = True)
```

[Источник](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L99)

**Параметры:**

warmup : Если True (по умолчанию), захватывает кадр прогрева перед возвратом. Полезно для камер, которым требуется время для настройки параметров захвата. Если False, кадр прогрева пропускается.

Установите соединение с камерой.

#### отключить[[lerobot.cameras.Camera.disconnect]]

```python
disconnect()
```

[Источник](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L181)

Отключитесь от камеры и освободите ресурсы.

#### read[[lerobot.cameras.Camera.read]]

```python
read()
```

[Источник](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L110)

**Возвращает:** `np.ndarray`

Захваченный кадр в виде массива numpy.

Синхронно захватить и вернуть один кадр с камеры.

Это блокирующий вызов, который будет ждать готовности оборудования и его SDK.

#### async_read[[lerobot.cameras.Camera.async_read]]

```python
async_read(timeout_ms: float = Ellipsis)
```

[Источник](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L121)

**Параметры:**

timeout_ms : Максимальное время ожидания нового кадра в миллисекундах. По умолчанию 200 мс (0,2 с).

**Возвращает:** `np.ndarray`

Захваченный кадр в виде массива numpy.

**Исключения:** ``TimeoutError``

- ``TimeoutError`` -- если новый кадр не поступает в течение `timeout_ms`.

Возвращает самую последнюю новую рамку.

Этот метод возвращает последний кадр, захваченный фоновым потоком. Если в буфере уже доступен новый кадр (захваченный с момента последнего вызова), он возвращается немедленно.

Он блокируется не более чем на `timeout_ms` только в том случае, если буфер пуст или если последний кадр уже был потреблен предыдущим вызовом `async_read`.

По сути, этот метод возвращает последнюю непрочитанную рамку, при необходимости ожидая поступления новой в пределах заданного таймаута.

Использование:
- Идеально подходит для циклов управления, в которых вы хотите убедиться, что каждый обработанный кадр
свежие, что фактически синхронизирует ваш цикл с частотой кадров камеры.
- Причины тайм-аута обычно включают: очень низкий FPS камеры, высокую нагрузку на обработку,
или если камера отключена.

#### find_cameras[[lerobot.cameras.Camera.find_cameras]]

```python
find_cameras()
```

[Источник](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L89)

**Возвращает:** List[Dict[str, Any]]

Список словарей, где каждый словарь содержит информацию об обнаруженной камере.

Определяет доступные камеры, подключенные к системе.

## CameraConfig[[lerobot.cameras.CameraConfig]]

#### lerobot.cameras.CameraConfig[[lerobot.cameras.CameraConfig]]

```python
lerobot.cameras.CameraConfig(fps: int | None = None, width: int | None = None, height: int | None = None)
```

[Источник](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/configs.py#L60)

## make_cameras_from_configs[[lerobot.cameras.make_cameras_from_configs]]

#### lerobot.cameras.make_cameras_from_configs[[lerobot.cameras.make_cameras_from_configs]]

```python
lerobot.cameras.make_cameras_from_configs(camera_configs: dict)
```

[Источник](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/utils.py#L25)

