Photomaton avec prévisualisation (sous Raspberry Pi)

Photomaton fabriqué par Guillaume pour son mariage – Félicitations au bricoleur – Félicitations aux jeunes mariés !!!

Article publié le 04/07/2019 ; Bon Anniversaire Geneviève C 😉

Bon, comme certains le savent déjà, je me suis amusé à retravailler des codes pour apprendre et pour aider autrui.

Il s’en est suivi la rédaction de 2 tutoriels.

  • Le premier, s’appelant simplement Photomaton automatique à base de Raspberry Pi, correspond à la prise d’une photo stockée dans un dossier (emplacement configurable). La photo est prise après un décompte permettant de prendre place (mais sans prévisualisation) puis un léger délai où on se voit avant la photo.
  • Le second, portant le titre Photomaton à base de Raspberry Pi – Choix 1 ou 4 ou 8 photos et impression directe, présente des fonctions différentes. Outre la possibilité de choisir soit 1 soit 4 soit 8 photos (concaténées en 1 seul document), cette version permet l’impression et, surtout, dispose d’une prévisualisation du flux vidéo durant le décompte (plus pratique pour bien se placer).

P.S : Il y en aura forcément d’autres, mais un article important (12/09/2020) est mon Photomaton ultime

J’avoue que ces photomatons ne me sont d’aucune utilité si ce n’est l’apprentissage et l’amusement (oui, à 44 ans, on reste juste un enfant de 11 ans … 4 fois plus enclin à jouer 🙂 ; non ?!?).

Cependant, d’autres les utilisent et m’écrivent par le biais des commentaires et/ou par courriel + par le biais d’un forum.

Et je prends en compte les remarques, voire les demandes … parfois, on pourrait presque parler de « commandes » (défaut de ma part que de vouloir réaliser les choses).

La genèse de cet article est d’une simplicité toute enfantine. Devinez quoi/comment ? Et oui, c’est une demande (en fait, 2 demandes quasi simultanées) !

Et la demande est simple en théorie : La simplicité du Photomaton de base + la prévisualisation du Photomaton plus évolué (+ l’impression pour l’une des personnes) .

Et comme vous vous en doutez : j’ai fait 🙂
Voici le détail de ma « création ».
Lorsque le photomaton est lancé :

  • Vous avec une image de fond (personnalisable) avec une fenêtre de prévisualisation transparente (mais visible) avec l’incrustation « Appuyez sur le bouton rouge »
  • Une fois le bouton pressé, vous avez un affichage de l’aperçu de la caméra (en mode inversé ; pas comme dans un miroir) avec décompte (5 secondes, mais modifiable)
  • On vous demande de sourire et la photo est prise et on vous remercie (oui, j’ai du savoir être 😉 tout de même)
  • La photo prise est affichée 3 secondes (histoire de se dire « Yep ; trop la classe » ou « Heu … On va la refaire plutôt » ; à vous de voir !)
  • Impression de la photo (ou pas ; c’est vous qui voyez ; il suffit de (dé)commenter la ligne selon le cas)
  • Retour à l’écran d’accueil.

Par contre, attention, il faut que le Raspberry Pi soit connecté au réseau pour être à l’heure car je nomme les photos avec la date et l’heure (c’est le défaut du Rpi).

Bon, soyons honnête, encore une fois avec ce site, nulle solution ne provient du génie créatif de l’auteur (oui, je parle de moi à la 3ème personne).
Tout a été possible par notre capacité (oui, je parle de moi à la 1ère personne du pluriel) dite de débrouillardise : la faculté du bidouilleur à s’adapter et donc à adapter.
Est-ce une honte ? Je ne crois pas.
Tout le monde n’a pas le génie de De Vinci.
Mais je crois aussi qu’un certain nombre de « dirigeants » prenant les « gens de base » pour des nazes n’ont même pas cette capacité d’adaptation 😉

L’installation est simple :

  1. Téléchargement de Raspbian Buster sur le site officiel
  2. Téléchargement de Etcher pour écrire l’image de Raspbian sur la carte SD (ou la clef USB)
  3. Réalisation de l’installation de Raspbian Buster en suivant cet excellent tutoriel ;-).
    (activer bien le ssh pour prendre la main si besoin)
  4. Téléchargement de mon script nommé Photomaton_Prev.zip
  5. Dézippage dans /home/pi (ou ailleurs, mais plus simple) pour obtenir /home/pi/Photomaton_Prev
  6. Création du dossier “Photos_du_Photomaton” sur le bureau avec
    mkdir /home/pi/Desktop/Photos_du_Photomaton
  7. Installation de tout le nécessaire avec
    sudo apt-get install cups cups-bsd python3-cups python3-picamera python3-rpi.gpio -y
  8. Autorisation d’administrer CUPS avec “pi” :
    sudo usermod -a -G lpadmin pi
  9. Redémarrage de CUPS :
    sudo /etc/init.d/cups restart
  10. Lancement de CUPS pour installer l’imprimante en lançant http://localhost:631/
    (Lecture du tutoriel d’installation d’une imprimante sur le Raspberry Pi afin de terminer l’installation si vous ne savez pas comment faire)
  11. modifier la ligne :
    os.system('lpr -h -PSamsung_Samsung_CLX-3300_Series -#1 -o media=A4 -o scaling=25 "/home/pi/Desktop/Photos_du_Photomaton/'+fileName+'"')
    afin de transformer -PSamsung_Samsung_CLX-3300_Series en -PVotre_Imprimante
    et -o media=A4 -o scaling=25 en ce que vous voulez (là, j’imprime en 25% sur du A4 pour mes tests ; par économie et écologie)
  12. Test de votre imprimante avec raspistill -o test.jpg puis lpr -h -PSamsung_Samsung_CLX-3300_Series -#1 -o media=A4 -o scaling=25 "/home/pi/test.jpg" (une image assez petite doit sortir)
  13. Installation du bouton poussoir sur le GPIO
    (Attention au choix des ports ; référez-vous au site https://fr.pinout.xyz/ ; j’ai pris BCM24 (GPIO18) et la masse qui est à côté).
  14. Puis lancement du Photomaton afin de tester :
    python3 /home/pi/Photomaton_Prev/Photomaton_Prev.py
  15. Joie ; Bonheur ; Zenitude 🙂 … Ou presque (voir le point 17)
  16. On peut évidemment lire mon tutoriel pour arrêter ou redémarrer le Raspberry Pi avec des boutons poussoirs afin d’améliorer l’expérience en l’absence d’un autre PC pour éteindre le Rpi.
  17. Pour le bien de votre santé mental, il peut être bon de savoir ce qui suit. Par défaut, le Raspberry Pi « coupe » l’affichage au bout de 10 minutes, ce qui est bien énervant en cas de pseudo inactivité : ce photomaton n’ayant ni clavier ni souris ni action détectée … on perd l’affichage au bout de 10 minutes. Mais … J’ai repensé à un truc que j’avais fait sur un forum pour aider qq’un et ça fonctionne.
    Il suffit de faire sudo apt install xscreensaver
    Puis de lancer le programme ( Menu Framboise ➜ Préférences ➜ Économiseur d’écran) et de demander « désactiver l’économiseur d’écran » (oui, ça parait dingue d’installer un économiseur pour lui dire de ne pas économiser ; je sais. Ce qui m’inquiète plus, c’est « Pourquoi j’ai pensé à ça comme solution ?!?!? Suis-je dingue ???)

Si tout se passe bien (faites plusieurs photos pour voir et vérifier que les photos sont bien enregistrées), on peut passer en affichage « écran complet ».
Attention, pour sortir du script, vous devrez alors vous connecter en ssh avec ssh pi@votre-ip puis taper votre mot de passe puis lancer la commande pkill lxterminal

Toujours partant pour le plein écran ?
Pour ce faire, transformez
pygame.init()
#screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
screen = pygame.display.set_mode((1920,1080),RESIZABLE)
width, height = screen.get_size()

en
pygame.init()
screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
#screen = pygame.display.set_mode((1920,1080),RESIZABLE)
width, height = screen.get_size()

Relancez le script pour vérifier.
C’est bon ? OK, alors stoppez le script avec la commande pkill lxterminal via SSH.

Donc, maintenant que tout roule, on peut automatiser le photomaton en lançant le script dès le démarrage du Raspberry Pi.
Pour cela, vous modifiez l’autostart avec : sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
Et vous ajoutez python3 /home/pi/Photomaton_Prev/Photomaton_Prev.py à la dernière ligne (validez avec “Ctrl”+”c” puis “o” puis “Entrée”).

Au démarrage, vous aurez donc le photomaton en plein écran de manière automatique.

A noter que si vous ne voulez pas l’impression, il suffit de transformer les lignes
os.system('lpr -h -PVotre_Imprimante blablabla pour les autres options "/home/pi/Desktop/Photos_du_Photomaton/'+fileName+'"')
time.sleep(15)

en
### os.system('lpr -h -PVotre_Imprimante blablabla pour les autres options "/home/pi/Desktop/Photos_du_Photomaton/'+fileName+'"')
### time.sleep(15)

ce qui aura pour effet de ne pas appliquer cette partie du script donc de ne pas imprimer

Et voilà. J’espère, encore une fois, avoir été utile.

Comme d’habitude, ce script est gratuit, mais merci de respecter vos sources si vous le diffusez/adaptez.
Et rien ne vous empêche de me faire un petit don de soutien de 1 ou 2 euros 😉

Je précise que cet article a été testé sur un Rpi3 avant rédaction puis écrit tout en étant installé (en même temps pour vérifier) sur un Rpi3B+.

A propos de Alban

Papa de 4 enfants étant lui-même resté un enfant. Diététicien-Nutritionniste tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide. Lassé de l'évolution du Monde de la Santé dans lequel les patients sont de plus en plus à traiter comme des clients (je suis un soignant !!!), j'ai opté pour une reconversion en repartant en Alternance... à... 44 ans D'abord dans le cadre d'un BTS SIO option SISR (Solutions d’Infrastructure, Systèmes et Réseaux) en Septembre 2019. Après l’obtention du BTS (16,57/20 ;-) ), j'ai décidé de poursuivre (toujours en alternance) en Bac+3 avec un Bachelor Concepteur de Systèmes d'Information. Depuis septembre 2022, je suis donc encore plus vieux, mais un jeune diplômé "Administrateur Systèmes et Réseaux". (Bac+3 obtenu avec 16,40/20) Citation personnelle : « Si la réussite facile flatte l’égo, C’est de la persévérance que nait le plaisir de la réussite. »

31 commentaires à propos de “Photomaton avec prévisualisation (sous Raspberry Pi)”

  1. Bonjour Alban, je suis très intéressé par votre script de photomaton mais je n’arrive pas à le faire fonctionner avec la dernière version de raspbian (bookworm) qui est passé en 64 bits et avec une nouvelle librairie (libcamera), je me demande aussi s’il ne s’agit pas de la librairie de la caméra module 2 (picamera2). Auriez-vous une version du script qui pourrait être mise à jour pour coller à tout ça? (Je suis un turbo novice dans tout ça… désolé si je ne suis pas clair…)

    • Salut Trollito,
      Effectivement, Raspberry Pi OS dans sa dernière version (basée sur Bookworm) fonctionne différemment.
      Ce script a été abandonné depuis longtemps et ne sera jamais mis à jour.
      Mon script personnel qui est une grosse évolution de mes précédents scripts (et articles) ne tourne que sous Raspberry PI OS Bullseye et la caméra V2.
      A ce jour, je n’ai pas de script pour Bookworm ni pour la camera V3 ; compte tenu de mes faibles compétences, c’est un énorme travail pour moi.
      Pas sûr que mon photobooth personnel ne reçoive de mise à jour/mise à niveau (appareil hors ligne donc ne présentant pas de risque de sécurité).
      ++

  2. Bonjour Alban.

    Merci pour ce tuto, ces codes et tout ton travail en général.

    Je voulais savoir si tu avais pensé à une licence pour tout ton travail? Par exemple, une licence libre, collaborative et non commerciale acceptant les modifications et le partage dans les mêmes conditions de licence?

    • Salut Florent,
      Le site est sous Licence Libre CC BY-SA 3.0 FR.
      Je suis « GNU/Linux » et « Logiciels Libres ».
      Je suis pour le partage (et le respect).
      Une « licence libre, collaborative et non commerciale acceptant les modifications et le partage dans les mêmes conditions » ??? –> J’y ai pensé (et je sais maintenant utiliser GitLab, ça peut aider).
      Bon … il est vrai que le vieux, il va devoir changer ses habitudes ☺️
      (oui, là, je parle de moi à la 3ème personne)
      Mais j’avoue que je trouve toujours que ce que je fais n’est pas « à la hauteur ».
      Merci de me redonner cette impulsion.
      Il faut que je retravaille mes divers scripts/codes (et que j’apprenne à coder) pour mettre ça sur GitLab …
      Au plaisir,

    • Bonjour Camille,
      Je n’ai pas testé cette caméra HQ en raison de son coût.
      N’ayant pas l’utilité de cette caméra, je ne peux me résoudre à l’acheter juste pour des tests.
      En effet, il faut la Caméra HQ officielle à 57 euros + la Lentille grand angle officielle 6mm à 28 euros soit un total de 85 euros = un peu cher si je ne m’en sers pas.
      Cependant, à priori, pas de raison de penser qu’elle ne fonctionnera pas puisque son fonctionnement est similaire à celles en 5 et 8 mPx
      D’ailleurs, cela pourrait (mais il faut adapter le script) fonctionner avec une caméra USB également.
      Bonne soirée,

  3. Bonjour Alban, excellent tuto que je suis à lettre !
    Je prépare un photobooth pour mon mariage, le 10/10/20….large !
    J’ai commandé les boutons poussoirs, le module caméra et je devrais recevoir tout ça la semaine prochaine. Juste deux questions (pour le moment !!!).
    Sans avoir connecter les boutons poussoirs ni le module caméra, j’imagine que lorsque je lance la commande : python3 /home/pi/Photomaton_Prev/Photomaton_Prev.py, il est normal d’avoir en retour le message : python3: can’t open file ‘/home/pi/Photomaton_Prev/Photomaton_Prev.py’: [Errno 2] No such file or directory ?
    Je ne pense pas passer par l’impression mais plutôt stocker les photos sur un serveur, je n’ai pas compris la partie de ce tuto (enfin celui avec le Joconde je crois quand je m’appelais Julien !). Je souhaite en revanche que mes convives puissent saisir leur adresse mail et recevoir les photos, ou même recevoir un lien sur lequel seraient stockées les photos !!!
    Si entre un lave-vaisselle, les courses et le reste tu as le temps de me filer un tuyau, ça serait un top cadeau de mariage ! Bon je ne suis pas un pro de Pi non plus. J’ai un magic mirror, une recallbox et bientôt un photobooth !

    • Salut,
      Je viens de réaliser 2 Bornes à Selphies pour 2 mariages (Mariages en même temps et pas au même endroit donc 2 bornes à fabriquer ; forcément).
      J’ai pas mal (énormément) bosser le script qui est une amélioration du x1x4x8.
      Surtout, j’ai intégré un HotSpot donc le Rpi, même sans accès à Internet, diffuse son propre réseau … et … comme il héberge son propre site web avec sa galerie photos, on peut « juste » voir les photos en direct.
      J’ai d’autres idées, mais pas assez de temps (mais j’en parle au Lave-Vaisselle régulièrement) donc je n’en parle pas avant d’avoir exploré ces délires.

      Pour ta question, je pense que ce script (j’en ai fait tellement pour jouer/tester/apprendre et j’en ai modifié tellement pour des tas de gens que je ne sais plus trop) démarre en … essayant de lancer l’aperçu.
      Donc, forcément, sans caméra, comment dire 😉
      Je te dis donc à bientôt … mais … patient ; Module PiCam tu devras attendre …

      P.S. : As-tu pensé au module RTC pour qu’il reste à la bonne date/heure ?

  4. Bonjour Alban,
    Voilà j’ai pour mission de faire un photomaton pour une soirée avec les copains, j’avais déjà utilisé un mac mini avec l’application Photobooth l’année dernière mais je ne l’ai plus.

    Comme c’est ce weekend (et oui toujours dos au mur ….) j’ai pour idée d’utiliser mon Rpi 3B (que je n’ai jamais utilisé donc c’est tout un programme) avec un gros bouton rouge, des câble GPIO et un camera Rpi V2 que je reçois jeudi …. LARGEEEEEEE.

    Bref j’ai récupéré une vielle webcam à la maison mais ma question est surtout :

    1/ Est ce possible de faire comme le photobooth de apple a savoir avoir un décompte puis prendre 4 photos automatiquement à une seconde d’intervalle puis les sauvegarder de manière indépendante sans montage ou autre ?

    2/ J’ai vu qu’il y avait un arrêt de Rpi s’il n’est pas activé pendant longtemps, y a t’il possibilité de se servir de l’économiseur pour repasser les photos prises ?

    Merci d’avance

    • Hello,
      Afin de laisser trace.
      Je suis actuellement très pris, mais j’ai pondu un script pour G hier soir.
      01h30 de tests intensifs pour repenser le code en partant de mon dernier script personnel.
      Intense mais sympathique (c’est cool de devoir sortir des sentiers battus).
      Résultat, G a son « photomaton » avec 1 bouton.
      En cas de pression sur ce bouton, ça lance un décompte de 5 secondes puis ça prend 4 photos à la suite (à 1 seconde d’intervalle).
      Ces 4 photos sont enregistrées en tant que telles sans modification puis elle sont affichées les unes après les autres durant 2 secondes avant de retourner à l’écran d’accueil.
      Bon amusement G 😉

  5. Bonjour et merci pour ce merveilleux travail.
    J’ai suivi avec rigueur ce tuto et j’ai un souci ;-).
    Quand je lance le photomaton, tout va bien mais j’ai toujours mon écran de base du Raspberry en fond d’écran. Le photomaton se lance mais en transparence et il reste visible la barre des taches du Raspeberry. Auriez-vous une idée d’où ça peut venir ?

    • Salut Philippe,
      As-tu gardé mon image « accueil.png » dans le dossier « Photomaton_Prev » ?
      Ça doit être un souci de chemin d’image (quoique, je pense que ça doit faire planter le script s’il ne trouve pas l’image de fond).
      Tu as fait des mofifications dans le script ?
      @+

  6. Salut à toi,

    Je suis en train de regarder de près un projet photomaton pour mon mariage dans 6 mois.

    Je serais très intéressé par le projet sur lequel tu as bossé pour Tony [template ardoise]

    Je cherche une bonne base pour faire des modifs dessus en tentant d’apprendre Python.

    En gros, mon objectif est.
    Écran d’accueil, choix entre 2 ou 4 photos, invitation à prendre la pose, compte à rebours avec photo en mode dlsr [gphoto], pre-visualisation, choix impression ou recommencer, si OK impression et sauvegarde sur mémoire, si non, rebelotte.

    Déjà très ambitieux pour moi…
    Si en 6 mois je m’en sors je tenterai tout ça en tactile… Sais t