Raspberry Lab

Bien choisir et utiliser une caméra sur Raspberry Pi

Le Raspberry Pi est équipé de deux ports DSI et CSI (Display Serial Interface et Camera Serial Interface) permettant de relier un écran ou une caméra spécialement conçus pour ce dernier. En effet, le branchement en USB d'une caméra ne donnera jamais une qualité et un framerate d'image aussi important qu'avec le port prévu à cet effet.

Prérequis

En plus d'un Raspberry Pi, il va falloir pour ce tutoriel une caméra compatible. Il en existe 4 modèles principaux. Pour vous aider à faire votre choix, en voici un comparatif :

Caméra Raspberry Pi
Freenove
Caméra Raspberry Pi Rev 2.1
Marque OFFICIELLE
Caméra Raspberry Pi Rev 2.1
element14
Caméra vision nocturne pour Raspberry
Weewooday
Résolution 5 Megapixels
2592 x 1944 pixels
8 Megapixels
3280 × 2464 pixels
8 Megapixels
3280 × 2464 pixels
5 Megapixels
2592 x 1944 pixels
Capteur N/A Sony IMX219-8 Sony IMX219-8 OV5647
Résolution Vidéo max 1080p @30fps | 720p @60fps
480p @90fps
1080p @30fps | 720p @60fps
480p @90fps
1080p @30fps | 720p @60fps
480p @90fps
1080p @30fps | 720p @60fps
480p @90fps
Note Amazon 4.3/5 4.4/5 N/A 3.6/5
Prix ~13€ ~44€ ~30€ ~20€
Plus d'infos Voir sur Amazon.fr ↗ Voir sur Amazon.fr ↗ Voir sur Amazon.fr ↗ Voir sur Amazon.fr ↗
Caméra Raspberry Pi
Freenove
Résolution
5 Megapixels
2592 x 1944 pixels
Capteur
N/A
Résolution Vidéo max
1080p @30fps | 720p @60fps
480p @90fps
Note Amazon
4.3/5
Prix
~13€
Caméra Raspberry Pi Rev 2.1
Marque OFFICIELLE
Résolution
8 Megapixels
3280 × 2464 pixels
Capteur
Sony IMX219-8
Résolution Vidéo max
1080p @30fps | 720p @60fps
480p @90fps
Note Amazon
4.4/5
Prix
~44€
Caméra Raspberry Pi Rev 2.1
element14
Résolution
8 Megapixels
3280 × 2464 pixels
Capteur
Sony IMX219-8
Résolution Vidéo max
1080p @30fps | 720p @60fps
480p @90fps
Note Amazon
N/A
Prix
~30€
Caméra vision nocturne pour Raspberry
Weewooday
Résolution
5 Megapixels
2592 x 1944 pixels
Capteur
OV5647
Résolution Vidéo max
1080p @30fps | 720p @60fps
480p @90fps
Note Amazon
3.6/5
Prix
~20€


Prix donnés à titre indicatif, constatés le 20/01/2021.

Maintenant que le choix de module est fait, passons à son utilisation.

Branchement de la caméra

Relier la caméra et le Raspberry est très simple. En effet, celle-ci dispose de son propre connecteur (slot). Il se trouve entre la prise Ethernet et la sortie HDMI. Suivez les images pour brancher correctement la caméra.


Préparation du Raspberry

Maintenant que tout est bien branché, on va devoir faire quelques réglages côté Raspberry. Dans un premier temps, il va falloir activer l'interface de la caméra. Pour se faire, rien de compliqué. Entrez la commande suivante dans le terminal.

sudo raspi-config

Une fois dans le menu, servez-vous des flèches directionnelles et de la touche Enter pour naviguer entre les menus.
Rendez-vous dans Interfacing Options puis dans Camera. Enfin, sélectionnez Yes quand on vous demande la confirmation d'activation ainsi que pour redémarrer le Raspberry.



Afin d'appliquer les modifications, redémarrez le Raspberry Pi.

sudo reboot



Avant de continuer ...

Détection de la caméra

Avant de continuer, voici une commande qui permet de vérifier que la caméra soit bien détectée :

vcgencmd get_camera

Si la ligne affichée n'est pas supported=1 detected=1, vérifier :

  • Que la caméra soit branchée correctement,
  • Que l'interface camera est bien activée.

Si detected n'est toujours pas à 1 après ces vérifications, redémarrer le Raspberry Pi et essayer de le mettre à jour :

sudo apt-get update
sudo apt-get upgrade

La caméra devrait maintenant être détectée.

Prendre une photo

A. Par le Terminal

Attaquons le vif du sujet ! La première chose que l'on va faire avec cette caméra est de prendre des photos. Pour ce faire, entrer les commandes suivantes :

cd
mkdir Camera
raspistill -o ~/Camera/image.jpg -q 100

Le deux premières commandes permettent de créer un dossier dans le répertoire personnel. La troisième ligne prend une photo et la stocke dans le dossier précédemment créé.
La commande raspistill accepte plusieurs arguments dont voici les plus importants :

Tous les arguments se retrouvent en entrant raspistill --help dans le terminal

Pour visionner l'image prise, deux possibilités :

B. En Python

Prendre des photos en passant par le terminal est un bon début mais... ce n'est pas encore top. Il est beaucoup plus pratique pour des éventuels projets de pouvoir prendre des photos directement à l'intérieur d'un script python. Pour se faire, il existe la librairie picamera. Cette librairie est normalement installée de base sur le Raspberry mais rien n'empêche de vérifier. Lançons donc la commande :

sudo apt-get install python3-picamera

Cette fois, la librairie est forcément installée. Commençons par créer un simple script Python qui prend et sauvegarde une photo. (en ayant comme nom la date)

Définir la résolution ?

La ligne camera.resolution n'est pas obligatoire. Cependant, si elle n'est pas renseignée, la résolution choisie sera de 1920x1080, et la qualité de la photo sera très mauvaise (surtout en basse luminosité). Si vous souhaitez une photo de la meilleure qualité possible, alors renseignez :

  • camera.resolution = (2592, 1944) si vous disposez d'une camera 5 MP,
  • camera.resolution = (3280, 2464) si vous disposez d'une camera 8 MP.
Photo à l'envers ?

Tourner une photo

En fonction de comment est positionné votre caméra, l'image capturée peut être à l'envers. Pour corriger ceci, ajouter ceci après la ligne "camera=PiCamera()" :

camera.hflip = True
camera.vflip = True

Ce qui donne, le code suivant :


D'autres options pouvant s'ajouter au même endroit sont disponibles pour les plus photophyles dotn voici une liste :

Prendre une vidéo

A. Par le Terminal

Maintenant que nous maitrisons la prise de photos, intéressons-nous à la vidéo. Pour enregistrer une vidéo de 10 secondes (10 000 ms) sous le nom de fichier video.h264, il suffit d'entrer la commande suivante.

raspivid -o video.h264 -t 10000

Les options de cette commande sont les mêmes que pour la photo (comme hf et vf par exemple).

Problème : la plupart des lecteurs vidéo ne sauront pas lire le format .h264. Pour cette raison, on va installer la librairie MP4Box qui va nous permettre de convertir les vidéos au format MP4. Pour installer MP4Box, il suffit d'entrer cette commande :

sudo apt-get install -y gpac

Une fois le logiciel installé, exécutez ceci afin de convertir le fichier :

MP4Box -add video.h264 video.mp4

Le fichier vidéo est maintenant lisible sur tous les appareils.

B. En Python

Comme pour les photos, voyons comment on peut prendre des vidéos en Python. Si vous n'avez pas installé la librairie picamera comme décrit plus haut (dans la partie En Python de Prendre une photo), alors remontez dans l'article pour suivre la démarche. Sinon, on peut directement passer au code.
Voici un script qui permet de capturer une vidéo en Python et de la convertir en MP4 automatiquement :

Information

Comment éteindre la led de la caméra ?

Si vous souhaitez que la led de votre caméra reste éteinte même lorsque celle-ci est en cours d'utilisation, il suffit de modifier le fichier /boot/config.txt en ajoutant la ligne disable_camera_led=1 à la fin.

Rappel - Editer un fichier dans le terminal :

sudo nano /boot/config.txt

C'est sur ce point que se termine ce tutoriel. Toutes les bases de l'utilisation sont ici, mais d'autres tutoriels autour de la caméra sortiront sûrement (Vidéo-surveillance ...). La seule limite sera l'imagination !

Voir la version complète du tutoriel (commentaires, notation)