Un des éléments les plus intéressant à rajouter est la Raspberry Pi Camera V2 ou PiCam. Ce composant permet de prendre photos et vidéos. Il est également possible d’effectuer du traitement d’image en direct, comme par exemple d’effectuer du suivi de ligne pour un robot.
Matériel
- Raspberry Pi avec une distribution Linux (par exemple Raspbian).
- PiCam V2
N.B.:attention les RaspberryPi Zero ne dispose pas d’un port CSI semblable aux autres modèles de Raspberry, il faut donc acheter un câble flexible spécial Raspberry Pi Zero
Installation matérielle de la PiCam
Tout d’abord éteignez votre Raspberry afin d’insérer le câble de la caméra dans le port CSI. Tirez doucement le verrou du port CSI pour le débloquer et insérez-y la nappe de la caméra sans forcer. Refermez le verrou, testez que la nappe est bien maintenue et rallumez la Raspberry une fois toutes ces étapes effectuées.
Installation Logicielle
Une fois la Raspberry Pi allumée et la caméra branchée, ouvrez un terminal et tapez la commande :
$sudo raspi-config
Une fenêtre comme ci-dessous va s’ouvrir, allez dans la proposition 5 intitulée «Interfacing Options » et appuyez sur Entrer.
Vous voilà maintenant dans la fenêtre ci-dessous :
Cliquez sur Entrer une fois sur la proposition 1 : « Camera » et autorisez la connexion à une Caméra.
Maintenant, votre PiCam est bien installée et nous allons pouvoir commencer à écrire notre premier code afin de prendre une photo.
Commande pour gérer la PiCam
La caméra PiCam peut être gérée par ligne de commande
Lancer la ligne suivante pour afficher un apperçu de la vidéo. Vous pouvez arrêter la programme à l’aide de Ctrl+C
raspivid -t 0 -w 800 -h 600 -fps 15
Prendre un capture d’image
raspistill -t 1000 -w 960 -h 720 -o test.png
Enregistrer une vidéo de 10 secondes
raspivid -t 10000 -w 960 -h 720 -o video.h264
Code Python pour prendre un photo
Placez vous dans un répertoire dans lequel vous souhaitez écrire votre code puis taper les commandes suivantes :
$ nano test_picam.py
Écrivez à l’intérieur de ce fichier les lignes suivantes :
from time import sleep from picamera import PiCamera camera = PiCamera() camera.resolution = (1024, 768) camera.start_preview() sleep(2) camera.capture('testPhoto.jpg') #Mettez le nom de l’image et le chemin du dossier dans lequel vous souhaitez stocker l’image (si vous mettez juste le nom, l’image s’enregistrera dans le dossier du code python) camera.stop_preview()
Ce code permet de tester votre caméra en enregistrant une capture d’image de la PiCam dans le fichier testPhoto.jpg.
Afficher la vidéo avec PyGame
Dans cette exemple, nous allons afficher la vidéo en pleine écran provenant de la caméra à l’aide de la librairie pygame
#!/usr/bin/env python # -*- coding: utf-8 -* import sys import picamera import pygame from pygame.locals import * pygame.init() screen = pygame.display.set_mode((0,0)) width, height = screen.get_size() if __name__ == '__main__': try: with picamera.PiCamera(resolution='640x480', framerate=24) as camera: camera.resolution = (width, height) # résolution #camera.rotation = 90 camera.start_preview() pygame.event.clear() while True: event = pygame.event.wait() if event.type == QUIT: pygame.quit() sys.exit() break elif event.type == KEYDOWN: if event.key == K_q: #press q to stop camera.stop_preview() pygame.quit() break except KeyboardInterrupt: print('sortie du programme!') camera.stop_preview() pygame.quit() sys.exit()
Afficher la vidéo avec OpenCV2
Selon l’utilisation que vous en aurez (traitement d’image par exemple), il sera peut-être préférable de faire une capture vidéo avec OpenCV
#!/usr/bin/env python # -*- coding: utf-8 -* #pip3 install -U numpy #pip3 install opencv-python import time import cv2 resolution= (640,480) if __name__ == '__main__': video = cv2.VideoCapture(0) ret, frame = video.read() while True: ret, frame = video.read() framedisp = cv2.resize(frame, resolution) cv2.imshow("video", framedisp) key = cv2.waitKey(1) if key == ord('q') or key == 27: #ESC video.release() cv2.destroyAllWindows()
Application
- Traitement et reconnaissance d’image avec OpenCV : (Exemple : Détection d’un cable avec OpenCV)
- Créer un système de surveillance