# Caméras

Les caméras fournissent les observations d’images perçues par une politique. Chaque backend — OpenCV, Intel RealSense, Reachy 2 — implémente l’interface `Camera`, de sorte que le changement de matériel ne modifie pas le code qui lit les images.

Consultez le [guide des caméras](../cameras) pour choisir et configurer une caméra, et [Caméras et capteurs tiers](../third_party_sensors) pour les appareils hors du jeu de base.

## Caméra[[lerobot.cameras.Camera]]

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

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

[Source](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L26)

**Paramètres :**

fps (float | None) : Images par seconde configurées ou mesurées

width (int | None) : Largeur du cadre en pixels

height (int | None) : Hauteur de l'image en pixels

Classe de base pour les implémentations de caméras.

Définit une interface standard pour les opérations de caméra sur différents backends. Les sous-classes doivent implémenter toutes les méthodes abstraites.

Gère les propriétés de base de la caméra (FPS, résolution) et les opérations principales :
- Connexion/déconnexion
- Capture de trame (synchrone/asynchrone/dernière)

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

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

[Source](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L99)

**Paramètres :**

warmup : Si True (par défaut), capture un frame de mise en route avant de renvoyer. Utile pour les caméras qui ont besoin de temps pour ajuster les paramètres de capture. Si False, ignore le frame de mise en route.

Établir la connexion à la caméra.

#### déconnecter[[lerobot.cameras.Camera.disconnect]]

```python
disconnect()
```

[Source](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L181)

Déconnectez-vous de la caméra et libérez les ressources.

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

```python
read()
```

[Source](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L110)

**Retourne :** `np.ndarray`

Image capturée en tant que tableau numpy.

Capture et renvoie un seul image de la caméra de manière synchrone.

Ceci est un appel bloquant qui attendra le matériel et son SDK.

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

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

[Source](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L121)

**Paramètres :**

timeout_ms : Temps maximal d'attente pour un nouvel image, en millisecondes. La valeur par défaut est de 200 ms (0,2 s).

**Retourne :** `np.ndarray`

Image capturée en tant que tableau numpy.

**Levée :** ``TimeoutError``

- ``TimeoutError`` -- Si aucune nouvelle image n'arrive dans le délai de `timeout_ms`.

Retourner le dernier nouveau frame.

Cette méthode récupère la dernière image capturée par le thread en arrière-plan. Si une nouvelle image est déjà disponible dans le tampon (capturée depuis l'appel précédent), elle est retournée immédiatement.

Il bloque jusqu'à `timeout_ms` uniquement si le tampon est vide ou si la dernière image a déjà été consommée par un appel précédent à `async_read`.

Essentiellement, cette méthode renvoie la dernière image non consommée, en attendant le cas échéant qu'une nouvelle image arrive dans le délai spécifié.

Utilisation :
- Idéal pour les boucles de contrôle où vous souhaitez vous assurer que chaque image traitée
est fraîche, synchronisant ainsi efficacement votre boucle sur le FPS de la caméra.
- Les causes d'un dépassement de délai incluent généralement : un FPS très faible de la caméra, une charge de traitement importante,
ou si la caméra est déconnectée.

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

```python
find_cameras()
```

[Source](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/camera.py#L89)

**Retourne :** List[Dict[str, Any]]

Une liste de dictionnaires, où chaque dictionnaire contient des informations sur une caméra détectée.

Détecte les caméras disponibles connectées au système.

## 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)
```

[Source](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)
```

[Source](https://github.com/huggingface/lerobot/blob/v0.7.0/src/lerobot/cameras/utils.py#L25)

