PiBooth
V. Module 3 : Affichage de la cam avec
compte à rebours
13/03/2021
Introduction :
Ici je veux :
Afficher le retour camera en effet miroir, pour un positionnement plus facile.
Par dessus cette image un compte à rebours s'affiche
Tout simplement avant la prise de vu pour avoir le temps de se placer correctement.
Nous allons ajouter des entrées dans le fichier config.ini
config.ini
...
largeur_compte=800
hauteur_compte=600
taille_compte=200
texte_compte="5"
couleur_texte_compte=[255,255,255]
-
Le programme de base
test_camera.py
#coding:utf-8
# Les librairies
import sys
import pygame
import pygame.camera
import time
# les Constantes importées ------------------------------------------------------------------------------------------------
dico={}
fichier=open('config.ini','r')
lignes=fichier.readlines()
for o in lignes:
sp=o.split('=')
dico[sp[0]]=sp[1]
for i in dico:
exec(i+'='+str(dico[i]))
#les constantes
pos_texte_compte=[(largeur_compte/2)-(taille_compte/10),(hauteur_compte/2)-(taille_compte/4)]
pos_texte_compte_fin=[0,(hauteur_compte/2)-(taille_compte/4)]
# Les variables
texte_compte_aff=texte_compte
# Initialisation de pygame et de la camera
pygame.init()
pygame.camera.init()
# definitione de la taille de la surface et de l'affichage de la camera
windows_surface = pygame.display.set_mode((largeur_ecran,hauteur_ecran),0)
cam_list = pygame.camera.list_cameras()
cam = pygame.camera.Camera(cam_list[0],(largeur_compte,hauteur_compte))
cam.start()
# Fonte du compte a rebour, la meme que celle de la page d'accueil
acceuil_fonte = pygame.font.Font(nom_fonte_acc, taille_compte) # Argument (nom de la fonte, taille)
launched = True
while launched :
for event in pygame.event.get() :
if event.type == pygame.QUIT :
launched = False
image1 = cam.get_image()
image1 = pygame.transform.scale(image1,(largeur_compte-20,hauteur_compte-20))
windows_surface.blit(image1,(10,10))
pygame.display.update()
# corp du programme ------------------------------------------------------------------------------------------------------------
# Texte a afficher
if texte_compte_aff == 0:
texte_cpt="Souriez"
else:
texte_cpt=str(texte_compte_aff)
# Mise en page du texte a afficher
texte_cpt = acceuil_fonte.render(texte_cpt, True, couleur_texte_compte) # argument (texte, lissage, couleur du texte, couleur de fond optionnel)
# Affichage du texte
if texte_compte_aff == 0:
windows_surface.blit(texte_cpt, pos_texte_compte_fin )
else:
windows_surface.blit(texte_cpt, pos_texte_compte )
# mise a jour de l affichage
pygame.display.flip()
# Compte a rebour
texte_compte_aff -=1
time.sleep(1)
J'ai réussi a faire le compte a rebour, mais celui ci fait que l'affichage de la camera est rafraichi environ toutes les 4s alors que sans le compte, elle est relativement fluide.