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).

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. 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.

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

  1. Bonjour
    J’ai poster un message tout a l’heure mais je ne le vois plus….
    Superbe tuto c’est ce que je chercher pour l’anniversaire de mon frère au moi de novembre.
    Bon tout est ok le programme ce lance avec les boutons etc
    Saut pour l’impression
    Mon imprimante: Canon Selphy CP1300 superbe imprimante je la recommande.
    J’ai tester avec la commande:
    raspistill -o test.jpg
    lpr -h -Canon_SELPHY_CP1300 -#1 -o media=A4 -o scaling=25 “/home/pi/test.jpg
    Ça n’imprime pas
    J’ai tester avec cette commande:
    lpr -h -Canon_SELPHY_CP1300 /home/pi/test.jpg
    Et la ça fonctionne
    Donc elle est bien installer….

    Je ne comprend pas pourquoi et même dans le script je pense que j’ai du oublier ou Alors il faut un autre paramètre
    J’ai changer le paramètre aussi dans le script avec mon imprimante mais ça ne fonctionne pas:

    os.system(‘lpr -h -Canon_SELPHY_CP1300 -#1 -o media=A4 -o scaling=25 “/home/pi/Photomaton_x1x4x8/photos/’+fileName+'”‘)

    La je n’ai pas assez de connaissance en python pour voir le pourquoi du comment
    Merci encore pour ce tuto
    Et pour l’aide
    Bruno

    • Salut Bruno,
      Merci pour tes commentaires.

      Chaque commentaire doit être approuvé donc, ils sont restés en attente le temps que je gère les choses du quotidien (travail, courses, repas en famille, lave-vaisselle, … Bref, des tas de trucs qui existe dans la vraie vie 😀 …).
      Maintenant, c’est bon, ils sont validés et visibles 😉

      Tu peux essayer cette ligne simplifiée ?
      os.system('lpr -h -Canon_SELPHY_CP1300 -#1 "/home/pi/Photomaton_x1x4x8/photos/'+fileName+'"')

      Explications:
      « media=A4 » = tu imprimes en format A4 soit 21×29,7 cm alors que ton imprimante est en 10×15 cm.
      « scaling=25 » = tu imprimes à l’échelle 25%.
      C’est 2 paramètres sont inutiles dans ton cas car ton imprimante est nativement en 10×15 cm

      Redis-moi si c’est OK

      @+

    • Bonjour Alban
      Ça fait plusieurs jours que je cherchais un bon Tuto pour un photomaton sur Raspberry pour l’anniversaire de mon frangin au mois de novembre.
      Enfin, superbe Tuto
      Bon, j’ai quand même quelques petits soucis
      J’ai une imprimante canon Selphy cp 1300
      Superbe pour photomaton (je recommande)
      j’ai trouver un driver (fichier PPD) sur un site alemand
      Mais je n’arrive pas a installer sur le Raspberry
      a vrai dire j’ai essayer le Tuto mais je ny arrive pas ou ne comprend pas
      C’est la 1ere fois que j’installe une imprimante sur mon ou mes raspberry
      Merci pour votre aide
      Encore merci pour ce superbe Tuto
      Bruno

  2. Bonjour Alban,

    tu as été une source d’inspiration pour mon photobooth et je t’en remercie.
    je rencontre un problème que tu as peut-être déjà eu :
    – lorsque je prends mes photos celles-ci sont légèrement bleutées. Je précise que j’éclaire le photobooth avec une lampe LED et que j’utilise les commandes raspistill.
    Je crois qu’il faut “jouer” avec le paramètre awb (balance des blancs) mais je n’en suis pas certain et je ne sais quelle valeur mettre.

    Merci
    Fred

    • Hello,
      Merci.
      Mes photos sont rarement réalisées dans de bonnes conditions car je ne fais que des photomatons de test, pour apprendre et aider les autres.
      De plus, mon capteur n’est pas le meilleur ; je l’ai acheté en 2016 pour moins de 15 euros.
      C’est un “Raspberry Pi Module Camera Case Cover DIYmall” en 5Mpx ; on doit être loin du capteur sony en 8 Mpx 😉
      Cependant, je n’ai pas franchement l’impression qu’elles soient bleutées.
      @+

  3. Bonjour Alban et Bravo ,

    J’ai un écran tactile sur mon raspberry en 1024×600.
    Quand j’essaie de modifier les valeurs LARGEUR-ECRAN HAUTEUR-ECRAN avec ces valeurs l’application plante.
    De même je voudrais sortir les photos sur une imprimante CANON SELPHY CT1300 (taille photo14,5cmx10cm).
    Quels sont les paramètres à prendre en compte.

    Merci d’avance.
    Vincent

      • Vincent,
        Fred,
        Je retravaille un code pour une personne et j’ai été un peu énervé par la chose également 🙂
        La personne utilisera un écran 16/9 en 1920×1080 px et j’ai dû retravailler mon code.
        Au moment des tests … Arg !!! Énervements !
        En bon “je tente de coder alors que je ne suis pas un codeur et que je n’ai pas appris le code”, je ne sais pas faire.
        J’ai trouvé une parade, mais c’est une honte …
        Cependant, comme elle fonctionne, je la partage :
        LARGEUR_ECRAN = 1920
        HAUTEUR_ECRAN = 1080
        LARGEUR_PHOTO = 1920
        HAUTEUR_PHOTO = 1080
        LARGEUR_APERCU = 1280
        HAUTEUR_APERCU = 720

        Ensuite, pour que la photo prise soit la même que l’aperçu, je fais un rognage auto de la photo pour qu’elle passe en 1280×720 🙂
        os.system("convert -flop -gravity Center -crop 1280x720+0+0 "+fileName+" "+fileNameCrop+"")
        J’espère que cela fonctionnera pour vous.
        @+

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*