Site icon AranaCorp

Gérer une PiCam V2 avec Raspberry Pi

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

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

Sources

Quitter la version mobile