Gastbeitrag: Photo Booth mit Open Source Software auf Linux

Nach­dem ich mich in letz­ter Zeit viel mit der Soft­ware für mei­nen Pho­to Booth beschäf­tigt habe, erhielt ich eine Email von Chris­toph Möl­ler, der mir sei­ne Lösung auf Basis von Open Source Soft­ware und Linux vor­ge­stellt hat. Kur­zer­hand habe ich ihn gefragt, ob er dar­aus nicht einen klei­nen Gast­bei­trag machen möch­te. Gesagt, getan … hier kommt Chris­tophs Open Source Lösung.

terminal_capture_web

Wie so vie­le ande­re auch habe ich mich köst­lich über Pad­dys Bei­trag Pho­to Booth bau­en - die Soft­ware amü­siert. Der Kampf mit ver­schie­dens­ter Soft­ware, die für sich gese­hen doch eigent­lich nur recht ein­fa­che Auf­ga­ben erle­di­gen soll­ten, erweck­te aber auch mein Tüft­ler-Herz. So schwie­rig kann das doch nicht sein!

Im Gegen­satz zu Pad­dy bin ich hier mit etwas ande­ren Vor­aus­set­zung ran gegan­gen. Zum einen wer­de ich damit nie Geld ver­die­nen, für mich ist es nur eine schö­ne Spie­le­rei. Dies heißt aber auch, dass ich kein Geld aus­ge­ben möch­te - weder in Hard- noch in Soft­ware. Vor­han­den ist eine Nikon D5200, die ich mit­tels USB-Kabel mit dem Lap­top ver­bun­den habe und per IR-Fern­be­die­nung aus­lö­sen möch­te. In die Ver­le­gen­heit, die glei­che Soft­ware zu tes­ten, die auch Pad­dy ver­wen­det hat­te, kann ich gar nicht erst kom­men - auf dem Lap­top läuft ledig­lich ein (Ubuntu)-Linux, wodurch ich mir mei­nen eige­nen Lösungs­weg suchen musste.

Und spä­tes­tens hier dürf­te es für die meis­ten von Euch schon abschre­ckend genug sein, denn für stark visu­ell gepräg­te Anwen­der dürf­te das in den meis­ten von mir ver­wen­de­ten Tools feh­len­de gra­fi­sche Nut­zer­inter­face wohl abschre­ckend genug sein. Trotz­dem möch­te ich kurz die Fle­xi­bi­li­tät mei­nes Vor­ge­hens erläu­tern, von dem Vor­teil von frei­er und kos­ten­lo­ser Soft­ware mal ganz abgesehen.

Die Instal­la­ti­on der ein­zel­nen Kom­po­nen­ten ist für ver­sier­te Linux-Nut­zer sehr ein­fach und auch Neu­lin­ge könn­ten sich z.B. auf der Sei­te ubuntuusers.de das ent­spre­chen­de Wis­sen aneig­nen. Der Umgang mit der Kon­so­le aller­dings kos­tet meis­tens etwas Überwindung.

Doch der Rei­he nach. Als ers­tes soll - wie schon erwähnt - per IR-Aus­lö­ser ein Foto geschos­sen und auf den Lap­top gela­den wer­den. Grund­be­din­gung war für mich, dass ich das RAW-Bild ger­ne noch (auto­ma­ti­siert) nach­be­ar­bei­ten woll­te, aber das Ergeb­nis des Fotos mög­lichst schnell am Lap­top anzei­gen möch­te. Aus die­sem Grund habe ich mei­ne Kame­ra so ein­ge­stellt, dass sie sowohl ein RAW als auch ein .jpg-Bild erzeugt. Die Auf­nah­me selbst sowie der Down­load der Bil­der funk­tio­niert dann mit dem Pro­gramm gphoto2, wel­ches eine gro­ße Anzahl an Kame­ras von Haus aus unterstützt.

Das von der Kame­ra kom­men­de jpg-Bild soll nun für eini­ge Sekun­den direkt ange­zeigt wer­den, wäh­rend das RAW-Bild noch mit eini­gen Pre­sets “ent­wi­ckelt” wird. Unter Linux gibt es kein Ligh­t­room, also ver­wen­de ich auch hier wie­der ein Open Soruce-Pro­dukt, näm­lich darktable. Das ist wirk­lich mal ein Stück­chen gei­le Soft­ware - soll­te Pad­dy hier­für mal ein Tuto­ri­al auf­zeich­nen wür­de ich es mir wohl sofort holen! Nach­dem also mit Hil­fe von darktable an einem Bei­spiel-Foto ent­spre­chen­de Pre­sets gene­riert wur­den (z.B. Objek­tiv­kor­rek­tur, ent­rau­schen und ähn­li­ches), sol­len die­se in einer xmp-Datei gespei­cher­ten Vor­ein­stel­lun­gen auf jedes geschos­se­ne RAW-Bild ange­wen­det wer­den. Zwar bin ich wirk­lich glück­lich dar­über, dass darktable eine dem Ligh­t­room sehr ähn­li­che Ober­flä­che bie­tet, aber für die Anwen­dung der Pre­sets brau­che ich die­se nicht mehr, so dass ich die ober­flä­chen­freie Vari­an­te darktable-cli ver­wen­den kann.

darktable_goethe_web

Da mei­ne Pho­to Booth-Vari­an­te kom­plett skript­ge­steu­ert ist, bleibt sie jetzt natür­lich auch fle­xi­bel. Das fer­tig ent­wi­ckel­te Bild kann ich nun an jeden Spei­cher­ort (z.B. drop­box, Web­ser­ver oder ähn­li­ches) spie­len oder eben auch direkt an den Dru­cker schi­cken. Hier­für bie­tet sich übri­gens das Pro­gramm Pho­to­Print an, wel­ches mit einer Kon­fi­gu­ra­ti­ons­da­tei eben­falls ohne Ober­flä­che gestar­tet wer­den und selbst­ver­ständ­lich auch einen wei­ßen Rah­men um das Foto legen kann 😉

Man­gels eines Foto-Dru­ckers kam die­ses bei mir bis­her aber noch nicht zum Einsatz.

Wei­ter­hin könn­te man auch noch die exif-Infor­ma­tio­nen eines Bil­des löschen und/oder bear­bei­ten, z.B. um GPS-Koor­di­na­ten hin­zu zu fügen.

Ich habe mich dazu ent­schlos­sen, die Fotos in einer klei­nen Slide­show anzei­gen zu las­sen und die Bil­der mit einem QR-Code zu ver­ste­hen, wel­cher z.B. auf die Down­load-Sei­te oder Drop­box ver­weist. Der QR-Code kann rela­tiv ein­fach mit dem Pro­gramm qren­code gene­riert und mit Hil­fe des image­ma­gick-Tools con­vert als Over­lay dem Bild hin­zu­ge­fügt wer­den. Der Bild­be­trach­ter feh zeigt dann die Slide­show und man könn­te mit Druck auf Enter (als Action-Befehl defi­niert) das Bild dann auch an den Dru­cker schicken.

goethe_qr_web

Mei­ne Lösung ist somit kom­plett - könn­te aber theo­re­tisch noch unend­lich erwei­tert wer­den, z.B. auch mit einem auto­ma­tisch gene­rier­ten Hin­weis per Mail oder Goog­le Talk nach jedem n-ten Druck, um Papier nach zu legen 🙂

Eben­falls reizt mich die tech­ni­sche Spie­le­rei, die Auf­nah­me des Fotos durch einen Raspber­ry Pi erle­di­gen zu las­sen und das Bild von einem leis­tungs­fä­hi­ge­ren per WLan ver­bun­de­nen Rech­ner zu ent­wi­ckeln sowie “online” zur Ver­fü­gung zu stel­len. Der Fan­ta­sie sind kei­ne Gren­zen gesetzt und - dank unend­lich vie­ler Tools - kann fast jedes Sze­na­rio umge­setzt wer­den. Selbst­ver­ständ­lich auch die bekann­ten Film­strei­fen, Mini-Col­la­gen oder ähn­li­ches. Auch die Aus­lö­sung per Maus, mit Count­down, Auf­nah­me von Film-Sequen­zen, Timel­ap­se-Seri­en usw. sind ohne grö­ße­ren Auf­wand möglich.

Hier noch mal kurz zusam­men­ge­fasst mein Lösungsweg:

  • Das Script capturePic.sh erzeugt erst den QR-Code und schal­tet dann in den Tethe­red-Modus, um auf Bil­der von der Kame­ra zu war­ten. Zusätz­lich wird noch ein schwar­zes Bild auf den Moni­tor gelegt, sowie der Remo­te-Modus der Kame­ra aktiviert
  • Nach der Auf­nah­me wird das test-hook.sh-Skript auf­ge­ru­fen, wel­ches zum Einen das *.jpg-Bild für eini­ge Sekun­den anzeigt und in eine Slide­show über­geht (startSlideshow.sh), zum ande­ren aber auch die Ent­wick­lung des RAW-Images anwirft (convertPicture.sh)
  • startSlideshow.sh been­det erst die aktu­ell lau­fen­de Slide­show, zeigt das soeben geknips­te Bild für eini­ge Sekun­den an und akti­viert dann die Slide­show. Hier könn­te auch eine Action-Anwei­sung zum Dru­cken aus­ge­wähl­ter Bil­der hin­zu­ge­fügt werden
  • convertPicture.sh star­tet zum einen die Ent­wick­lung des Bil­des und fügt für die Slide­show noch den QR-Code als Over­lay hin­zu. Die­ser Sub-Pro­zess könn­te theo­re­tisch auch auf einen völ­lig ande­ren Rech­ner aus­ge­la­gert werden

Down­load der Skriptdateien

Banner_Photo_Booth

Mit dem Absenden eines Kommentars stimmst du unserer Datenschutzerklärung und der Speicherung von dir angegebener, personenbezogener Daten zu.

19 Gedanken zu „Gastbeitrag: Photo Booth mit Open Source Software auf Linux“

    • Hal­lo Chris, 

      ja - zumin­dest bedingt. Für ein Pro­gramm wie darktable ist der raspber­ry ein­fach zu schwach­brüs­tig, aber das eigent­li­che Knip­sen sowie das Anzei­gen der Slide­show schafft das klei­ne Kraft­pa­ket spielend!

      Antworten
      • Wie schau­ts mitn Cubietruck aus?

        All­Win­ner­Tech SOC A20, ARM® Cortex™-A7 Dual-Core, ARM® Mali400 MP2 Com­pli­es with OpenGL ES 2.0/1.1
        1GB/2GB DDR3@480MHz (960MTPS)
        HDMI&VGA 1080P dis­play out­put on-board
        10M/100M/1G Ethernet
        Wifi+BT wire­less con­nec­tion with anten­na on-board
        SATA 2.0 inter­face sup­port 2.5′ HDD, (for 3.5′ HDD, only need ano­ther 12V power input)
        Sto­rage solu­ti­on: NAND+MicroSD or TSD+ MicroSD or 2*MicroSD
        2 x USB HOST, 1 x OTG, 1 x Tos­link (SPDIF Opti­cal), 1 x IR, 4 x LEDs, 1 Head­pho­ne, 3 x Keys
        Power: DC5V @ 2.5A with HDD, sup­port Li-bat­tery & RTC
        54 exten­ded pins inclu­ding I2S, I2C, SPI, CVBS, LRADC x2,UART, PS2, PWMx2, TS/CSI, IRDA, LINEIN&FMIN&MICIN, TVINx4 with 2.0 pitch connectors

        Antworten
      • Einen Cubietruck hat­te ich bis­her noch nicht in den Fin­gern, aber ich den­ke, auch darktable müss­te dar­auf lau­fen. Man könn­te es ja auf einen Kern beschrän­ken oder mit nice star­ten, damit er nicht nur noch mit darktable beschäf­tigt ist. Auch die Auf­lö­sung der Bil­der könn­te man etwas run­ter schrauben.

        Antworten
  1. Hal­lo,

    ich muss zuge­ben, dass ich mir als über­zeug­ter Linux-Benut­zer beim Lesen von Pad­dys Bei­trag etwas Ähn­li­ches gedacht hab wie Christoph … 😉

    Umso über­rasch­ter bin ich, jetzt hier dazu einen Linux-Arti­kel zu fin­den. Super, bit­te mehr davon! 🙂

    Kathy

    Antworten
    • Aber ich fürch­te, wenn Pad­dy sogar noch eher zu einer Win­dows-Lösung greift als zu Linux, müss­ten wir wohl viel Über­zeu­gungs­ar­beit leis­ten, damit er sich hier umstim­men lässt 😉

      Antworten
    • Hey Mark,
      schön, dass jemand den alten Mann auf der Bank erkannt hat 😉

      Na ja, ich brauch­te ein Pho­to Booth-Bei­spiel - und bei einer klei­nen Rad­tour konn­te ich Herrn Goe­the über­re­den, für ein Foto still zu sitzen.

      Antworten
  2. Die­se tech­ni­schen Spie­le­rei­en kön­nen so gren­zen­los aus­ge­wei­tet wer­den, dass man Stun­den und Wochen damit ver­brin­gen könn­te, dies alles auszutesten. 

    Schö­ner Bericht mit tol­len Hinweisen 🙂

    Antworten
  3. Das gan­ze lie­ße sich auch auf dem Mac umset­zen. Mit Actions Fol­ders, Pho­to­shop- und Gra­fik­kon­ver­ter-Actions, Auto­ma­tor und viel­leicht eini­gen der oben genann­ten Soft­wares (kom­pi­liert für Mac, ist ja alles *n?x) gibt es eine Men­ge Mög­lich­kei­ten. Ich wünsch­te, ich hät­te gera­de mehr Zeit…!

    Antworten
    • Ich gebe zu, der Voll­stän­dig­keit hal­ber hät­te ich dar­auf hin­wei­sen müs­sen, dass vie­le Punk­te auch mit dem Mac mög­lich sind. Aber das ent­schul­di­ge ich ein­fach mal damit, dass es um eine rei­ne Open Source-Lösung ging 😉

      Antworten
  4. Sor­ry.. aber mich wür­de inter­es­sie­ren: wie lan­ge braucht man um sich mit Linux soweit ein­zu­ar­bei­ten, dass man sowas hin­be­kommt? Ich bin begeis­tert. Chapeau!

    Antworten
    • Hier­für braucht man viel weni­ger Zeit, als die meis­ten glau­ben mögen. Das Pro­blem liegt häu­fig dar­in, dass man sich von gewohn­ten Pfa­den ver­ab­schie­den muss - aber alles, was hier­bei ange­wen­det wird, ist kei­ne Zauberei.
      Jeder, der gewillt ist, die­sen Weg zu gehen (und ein wenig Tech­nik affin ist), wird ziem­lich schnell zum Ziel kom­men. Außer­dem ist in der Regel unter Linux-Anwen­dern der Com­mu­ni­ty-Gedan­ke sehr aus­ge­prägt, so dass man hier auch gut Hil­fe bekommt.

      Antworten
  5. Hal­lo Chris,

    schö­ner Bei­trag, gute Idee.

    Aber … 🙂 … viel­leicht soll­test Du, nur um rudi­men­tä­res anzu­spre­chen, den übli­chen “She­bang” in Dei­ne Scrip­te ein­bau­en. Es gibt mehr als genü­gend “Shells” mit denen Dei­ne Scrip­te nicht lau­fen wer­den. Übli­cher­wei­se nutzt man ” #! /bin/bash ” oder ” #! /bin/sh ” oder ” #! /bin/ksh ” etc.
    Zudem liegt nicht jedes Bina­ry “im Pfad” so dass man eine Pfad­va­ria­ble ange­ben soll­te, oder Varia­blen setzt … z.B.

    GPHOTO=‘which gphoto2‘

    Dann wird aus:
    gphoto2 --set-con­fig-index /main/capturesettings/capturemode=4

    ${GPHOTO} --set-con­fig-index /main/capturesettings/capturemode=4

    Grü­ße,
    Martin

    Antworten
    • Hal­lo Martin,
      Dei­ne Hin­weis sind natür­lich rich­tig, aller­dings war der Bei­trag auch nur als Denk­an­stoß gedacht und weni­ger als fer­ti­ge bzw all­ge­mein gül­ti­ge Lösung.

      Antworten
  6. Auch mit Win­dows-Soft­ware ist die Rea­li­sa­ti­on nicht ganz so tri­vi­al. Da ist noch eini­ges an Hand­ar­beit not­wen­dig. Das hat Pad­dys Arti­kel sehr schön gezeigt. Sicher­lich kei­ne Rake­ten­wis­sen­schaft, aber eben auch nicht gänz­lich ohne Anspruch. Wer das Wis­sen und die Aus­dau­er für die Rea­li­sie­rung unter Win­dows hat, wird dies auch mit Linux schaffen.

    Antworten
  7. Prin­zi­pi­ell eine gute Idee der ich auch schon nach­ge­gan­gen bin. Was mich jedoch bei der Linux-Vari­an­te etwas stört ist, dass es kei­ne ver­nünf­ti­ge Live-View Mög­lich­keit gibt. Natür­lich gibt es die Pre­view-Opti­on, jedoch wird die­se bei­spiels­wei­se von mei­nen zwei Kame­ras nicht unter­stützt. Inso­fern ist eine rei­ne Linux-Vari­an­te auch ein Kom­pro­miss beim Funk­ti­ons­um­fang, also in mei­nem Fall der Ver­zicht auf Preview.

    Antworten
  8. Hal­lo!

    Dan­ke für den tol­len Beitrag! 🙂

    Eine Fra­ge als Linux-Neuling…
    ist es mög­lich das Skript über den Aus­lö­ser an der Kame­ra zu starten??

    Antworten

Schreibe einen Kommentar zu Christoph Antworten abbrechen