PIcam et Python

voyons comment intégrer la Pi camera dans un programme Python pour exploiter photos et vidéos dans des appli perso.

dans la partie RASPBERRY – generalités, nous avons vu comment brancher et configurer la camera ainsi que les premiers pas avec le shell.

PIcam dans PYTHON: bases

petit exemple tres basique de commande de la camera en python, ouvrir le programme ci dessous dans thonny python et l’executer ( fleche verte play de TP). attention, ne fonctionne qu’avec un ecran connecté mais pas en mode SSH.

from picamera import PiCamera
from time import sleep

camera = PiCamera()

camera.start_preview()
sleep(5)
camera.stop_preview()

l’apercu de la camera s’affiche en plein ecran pendant 5 secondes puis se referme. la valeur sleep() permet de fixer la durée d’affichage

si par hasard , l’image s’affiche tournée , on peut corriger l’orientation en ajoutant la ligne ci dessous apres “camera = PiCamera()” et en adaptant l’angle a l’orientation souhaitée:

camera.rotation = 180

on peu egalement rendre l’image plus ou moins transparente en ajustant la valeur alpha que l’on precise dans “camera.start_preview()“, par exemple:

camera.start_preview(alpha=150)

la valeur alpha peut varier de 0 a 255.

PRENDRE une PHOTO pendant le liveview:

il suffit d’ajouter une commande “camera.capture()” en précisant le chemin d’enregistrement de l’image.

from picamera import PiCamera
from time import sleep

camera = PiCamera()

camera.start_preview()
sleep(5)
camera.capture('/home/pi/Desktop/image.jpg')
camera.stop_preview()

le capteur de la camera adapte automatiquement la luminosité de l’image a condition de mettre au moins 2 secondes dans la valeur sleep().

en incluant la séquence d’instruction dans une boucle “for i in range()” on peut programmer une sequence de prise de vues automatique

ENREGISTRER de la video dans un fichier:

c’est aussi simple que de prendre une photo, charger et exécuter l’exemple ci dessous:

from picamera import PiCamera
from time import sleep

camera = PiCamera()

camera.start_preview()
camera.start_recording('/home/pi/Desktop/video.h264')
sleep(5)
camera.stop_recording()
camera.stop_preview()

nous venons de voir quelques bases pour l’utilisation de la camera sous python, pour approfondir les sujet , voir le site dédié a la PI camera lien ci dessous:

https://picamera.readthedocs.io/en/release-1.13/

PIcam et TKinter:

dernier point interressant a regarder , l’intégration dePIcam avec un GUI TKinter . pour cela , nous allons utiliser le petit bout de programme ci dessous, l’ouvrir dans Thonny Python et voir ce qu’il fait quand on le lance:

import tkinter as tk
import picamera
camera = picamera.PiCamera()

def CameraON():
    camera.preview_fullscreen=False
    camera.preview_window=(515,230, 640, 480)
    camera.resolution=(640,480)
    camera.sharpness = (100)
    camera.start_preview()    
def CameraOFF():
    camera.stop_preview()    
def EXIT():
    root.destroy
    camera.stop_preview()
    camera.close()
    quit()
def Brightness(value):
    camera.brightness = int(value)    
def Contrast(value):
    camera.contrast = int(value)  
def Saturation(value):
    camera.saturation = int(value)
   
root = tk.Tk()
root.resizable(width=False, height=False)
root.geometry("750x480+400+200")
root.title("PIcam")
root.buttonframe = tk.Frame(root)
root.buttonframe.grid(row=8, column=1)
tk.Button(root.buttonframe, text='Camera  ON', command=CameraON).grid(row=1, column = 1)
tk.Button(root.buttonframe, text='Camera OFF', command=CameraOFF).grid(row=2, column = 1)
tk.Button(root.buttonframe, text=' FIN du PGM ', command=EXIT).grid(row=3, column = 1)
tk.Scale(root.buttonframe, from_=30, to=100, orient=tk.HORIZONTAL, label = "Brightness", command=Brightness).grid(row=4,column=1)
tk.Scale(root.buttonframe, from_=-100, to=100, orient=tk.HORIZONTAL, label = "Contrast", command=Contrast).grid(row=5,column=1)
tk.Scale(root.buttonframe, from_=-100, to=100, orient=tk.HORIZONTAL, label = "Saturation", command=Saturation).grid(row=6,column=1)

root.mainloop()

a l’ouverture du programme , s’affiche un frame TKinter avec des boutons et slider de commande:

quand on clique sur le bouton “Camera ON” , on lance une cession de la camera qui s’affiche en mode vidéo dans une fenêtre :

ensuite on peut modifier les réglages “brightness/contrast et saturation” de la camera :

le bouton “camera OFF” ferme la camera ( la video disparait) et le bouton “FIN du PGME” permet de refermer le programme.

en créant un icone de lancement sur le bureau associé au pgme Python ( voir rubrique RASPBERRY généralités” on peut créer une application indépendante sans thonny python. a ce stade de multiples evlutions/options sont envisageables, ajouter un bouton pour prendre une image, ajouter un bouton pour enregistrer une sequence video dans un fichier , etc….

a vous de jouer !…