Nachdem ich mich in letzter Zeit viel mit der Software für meinen Photo Booth beschäftigt habe, erhielt ich eine Email von Christoph Möller, der mir seine Lösung auf Basis von Open Source Software und Linux vorgestellt hat. Kurzerhand habe ich ihn gefragt, ob er daraus nicht einen kleinen Gastbeitrag machen möchte. Gesagt, getan … hier kommt Christophs Open Source Lösung.
Wie so viele andere auch habe ich mich köstlich über Paddys Beitrag Photo Booth bauen - die Software amüsiert. Der Kampf mit verschiedenster Software, die für sich gesehen doch eigentlich nur recht einfache Aufgaben erledigen sollten, erweckte aber auch mein Tüftler-Herz. So schwierig kann das doch nicht sein!
Im Gegensatz zu Paddy bin ich hier mit etwas anderen Voraussetzung ran gegangen. Zum einen werde ich damit nie Geld verdienen, für mich ist es nur eine schöne Spielerei. Dies heißt aber auch, dass ich kein Geld ausgeben möchte - weder in Hard- noch in Software. Vorhanden ist eine Nikon D5200, die ich mittels USB-Kabel mit dem Laptop verbunden habe und per IR-Fernbedienung auslösen möchte. In die Verlegenheit, die gleiche Software zu testen, die auch Paddy verwendet hatte, kann ich gar nicht erst kommen - auf dem Laptop läuft lediglich ein (Ubuntu)-Linux, wodurch ich mir meinen eigenen Lösungsweg suchen musste.
Und spätestens hier dürfte es für die meisten von Euch schon abschreckend genug sein, denn für stark visuell geprägte Anwender dürfte das in den meisten von mir verwendeten Tools fehlende grafische Nutzerinterface wohl abschreckend genug sein. Trotzdem möchte ich kurz die Flexibilität meines Vorgehens erläutern, von dem Vorteil von freier und kostenloser Software mal ganz abgesehen.
Die Installation der einzelnen Komponenten ist für versierte Linux-Nutzer sehr einfach und auch Neulinge könnten sich z.B. auf der Seite ubuntuusers.de das entsprechende Wissen aneignen. Der Umgang mit der Konsole allerdings kostet meistens etwas Überwindung.
Doch der Reihe nach. Als erstes soll - wie schon erwähnt - per IR-Auslöser ein Foto geschossen und auf den Laptop geladen werden. Grundbedingung war für mich, dass ich das RAW-Bild gerne noch (automatisiert) nachbearbeiten wollte, aber das Ergebnis des Fotos möglichst schnell am Laptop anzeigen möchte. Aus diesem Grund habe ich meine Kamera so eingestellt, dass sie sowohl ein RAW als auch ein .jpg-Bild erzeugt. Die Aufnahme selbst sowie der Download der Bilder funktioniert dann mit dem Programm gphoto2, welches eine große Anzahl an Kameras von Haus aus unterstützt.
Das von der Kamera kommende jpg-Bild soll nun für einige Sekunden direkt angezeigt werden, während das RAW-Bild noch mit einigen Presets “entwickelt” wird. Unter Linux gibt es kein Lightroom, also verwende ich auch hier wieder ein Open Soruce-Produkt, nämlich darktable. Das ist wirklich mal ein Stückchen geile Software - sollte Paddy hierfür mal ein Tutorial aufzeichnen würde ich es mir wohl sofort holen! Nachdem also mit Hilfe von darktable an einem Beispiel-Foto entsprechende Presets generiert wurden (z.B. Objektivkorrektur, entrauschen und ähnliches), sollen diese in einer xmp-Datei gespeicherten Voreinstellungen auf jedes geschossene RAW-Bild angewendet werden. Zwar bin ich wirklich glücklich darüber, dass darktable eine dem Lightroom sehr ähnliche Oberfläche bietet, aber für die Anwendung der Presets brauche ich diese nicht mehr, so dass ich die oberflächenfreie Variante darktable-cli verwenden kann.
Da meine Photo Booth-Variante komplett skriptgesteuert ist, bleibt sie jetzt natürlich auch flexibel. Das fertig entwickelte Bild kann ich nun an jeden Speicherort (z.B. dropbox, Webserver oder ähnliches) spielen oder eben auch direkt an den Drucker schicken. Hierfür bietet sich übrigens das Programm PhotoPrint an, welches mit einer Konfigurationsdatei ebenfalls ohne Oberfläche gestartet werden und selbstverständlich auch einen weißen Rahmen um das Foto legen kann 😉
Mangels eines Foto-Druckers kam dieses bei mir bisher aber noch nicht zum Einsatz.
Weiterhin könnte man auch noch die exif-Informationen eines Bildes löschen und/oder bearbeiten, z.B. um GPS-Koordinaten hinzu zu fügen.
Ich habe mich dazu entschlossen, die Fotos in einer kleinen Slideshow anzeigen zu lassen und die Bilder mit einem QR-Code zu verstehen, welcher z.B. auf die Download-Seite oder Dropbox verweist. Der QR-Code kann relativ einfach mit dem Programm qrencode generiert und mit Hilfe des imagemagick-Tools convert als Overlay dem Bild hinzugefügt werden. Der Bildbetrachter feh zeigt dann die Slideshow und man könnte mit Druck auf Enter (als Action-Befehl definiert) das Bild dann auch an den Drucker schicken.
Meine Lösung ist somit komplett - könnte aber theoretisch noch unendlich erweitert werden, z.B. auch mit einem automatisch generierten Hinweis per Mail oder Google Talk nach jedem n-ten Druck, um Papier nach zu legen 🙂
Ebenfalls reizt mich die technische Spielerei, die Aufnahme des Fotos durch einen Raspberry Pi erledigen zu lassen und das Bild von einem leistungsfähigeren per WLan verbundenen Rechner zu entwickeln sowie “online” zur Verfügung zu stellen. Der Fantasie sind keine Grenzen gesetzt und - dank unendlich vieler Tools - kann fast jedes Szenario umgesetzt werden. Selbstverständlich auch die bekannten Filmstreifen, Mini-Collagen oder ähnliches. Auch die Auslösung per Maus, mit Countdown, Aufnahme von Film-Sequenzen, Timelapse-Serien usw. sind ohne größeren Aufwand möglich.
Hier noch mal kurz zusammengefasst mein Lösungsweg:
- Das Script capturePic.sh erzeugt erst den QR-Code und schaltet dann in den Tethered-Modus, um auf Bilder von der Kamera zu warten. Zusätzlich wird noch ein schwarzes Bild auf den Monitor gelegt, sowie der Remote-Modus der Kamera aktiviert
- Nach der Aufnahme wird das test-hook.sh-Skript aufgerufen, welches zum Einen das *.jpg-Bild für einige Sekunden anzeigt und in eine Slideshow übergeht (startSlideshow.sh), zum anderen aber auch die Entwicklung des RAW-Images anwirft (convertPicture.sh)
- startSlideshow.sh beendet erst die aktuell laufende Slideshow, zeigt das soeben geknipste Bild für einige Sekunden an und aktiviert dann die Slideshow. Hier könnte auch eine Action-Anweisung zum Drucken ausgewählter Bilder hinzugefügt werden
- convertPicture.sh startet zum einen die Entwicklung des Bildes und fügt für die Slideshow noch den QR-Code als Overlay hinzu. Dieser Sub-Prozess könnte theoretisch auch auf einen völlig anderen Rechner ausgelagert werden
Coole Idee!
Wäre den auch möglich anstatt einen Rechner ein Raspberry zu nutzen?
Hallo Chris,
ja - zumindest bedingt. Für ein Programm wie darktable ist der raspberry einfach zu schwachbrüstig, aber das eigentliche Knipsen sowie das Anzeigen der Slideshow schafft das kleine Kraftpaket spielend!
Wie schauts mit einem cuvietruck aus?
Wie schauts mitn Cubietruck aus?
AllWinnerTech SOC A20, ARM® Cortex™-A7 Dual-Core, ARM® Mali400 MP2 Complies with OpenGL ES 2.0/1.1
1GB/2GB DDR3@480MHz (960MTPS)
HDMI&VGA 1080P display output on-board
10M/100M/1G Ethernet
Wifi+BT wireless connection with antenna on-board
SATA 2.0 interface support 2.5′ HDD, (for 3.5′ HDD, only need another 12V power input)
Storage solution: NAND+MicroSD or TSD+ MicroSD or 2*MicroSD
2 x USB HOST, 1 x OTG, 1 x Toslink (SPDIF Optical), 1 x IR, 4 x LEDs, 1 Headphone, 3 x Keys
Power: DC5V @ 2.5A with HDD, support Li-battery & RTC
54 extended pins including I2S, I2C, SPI, CVBS, LRADC x2,UART, PS2, PWMx2, TS/CSI, IRDA, LINEIN&FMIN&MICIN, TVINx4 with 2.0 pitch connectors
Einen Cubietruck hatte ich bisher noch nicht in den Fingern, aber ich denke, auch darktable müsste darauf laufen. Man könnte es ja auf einen Kern beschränken oder mit nice starten, damit er nicht nur noch mit darktable beschäftigt ist. Auch die Auflösung der Bilder könnte man etwas runter schrauben.
Hallo,
ich muss zugeben, dass ich mir als überzeugter Linux-Benutzer beim Lesen von Paddys Beitrag etwas Ähnliches gedacht hab wie Christoph … 😉
Umso überraschter bin ich, jetzt hier dazu einen Linux-Artikel zu finden. Super, bitte mehr davon! 🙂
Kathy
Aber ich fürchte, wenn Paddy sogar noch eher zu einer Windows-Lösung greift als zu Linux, müssten wir wohl viel Überzeugungsarbeit leisten, damit er sich hier umstimmen lässt 😉
Hi Christoph schöne Arbeit, aber Ilmenau hat doch schönere Stellen 😛
Hey Mark,
schön, dass jemand den alten Mann auf der Bank erkannt hat 😉
Na ja, ich brauchte ein Photo Booth-Beispiel - und bei einer kleinen Radtour konnte ich Herrn Goethe überreden, für ein Foto still zu sitzen.
Diese technischen Spielereien können so grenzenlos ausgeweitet werden, dass man Stunden und Wochen damit verbringen könnte, dies alles auszutesten.
Schöner Bericht mit tollen Hinweisen 🙂
Das ganze ließe sich auch auf dem Mac umsetzen. Mit Actions Folders, Photoshop- und Grafikkonverter-Actions, Automator und vielleicht einigen der oben genannten Softwares (kompiliert für Mac, ist ja alles *n?x) gibt es eine Menge Möglichkeiten. Ich wünschte, ich hätte gerade mehr Zeit…!
Ich gebe zu, der Vollständigkeit halber hätte ich darauf hinweisen müssen, dass viele Punkte auch mit dem Mac möglich sind. Aber das entschuldige ich einfach mal damit, dass es um eine reine Open Source-Lösung ging 😉
Sorry.. aber mich würde interessieren: wie lange braucht man um sich mit Linux soweit einzuarbeiten, dass man sowas hinbekommt? Ich bin begeistert. Chapeau!
Hierfür braucht man viel weniger Zeit, als die meisten glauben mögen. Das Problem liegt häufig darin, dass man sich von gewohnten Pfaden verabschieden muss - aber alles, was hierbei angewendet wird, ist keine Zauberei.
Jeder, der gewillt ist, diesen Weg zu gehen (und ein wenig Technik affin ist), wird ziemlich schnell zum Ziel kommen. Außerdem ist in der Regel unter Linux-Anwendern der Community-Gedanke sehr ausgeprägt, so dass man hier auch gut Hilfe bekommt.
Hallo Chris,
schöner Beitrag, gute Idee.
Aber … 🙂 … vielleicht solltest Du, nur um rudimentäres anzusprechen, den üblichen “Shebang” in Deine Scripte einbauen. Es gibt mehr als genügend “Shells” mit denen Deine Scripte nicht laufen werden. Üblicherweise nutzt man ” #! /bin/bash ” oder ” #! /bin/sh ” oder ” #! /bin/ksh ” etc.
Zudem liegt nicht jedes Binary “im Pfad” so dass man eine Pfadvariable angeben sollte, oder Variablen setzt … z.B.
GPHOTO=‘which gphoto2‘
Dann wird aus:
gphoto2 --set-config-index /main/capturesettings/capturemode=4
${GPHOTO} --set-config-index /main/capturesettings/capturemode=4
Grüße,
Martin
Hallo Martin,
Deine Hinweis sind natürlich richtig, allerdings war der Beitrag auch nur als Denkanstoß gedacht und weniger als fertige bzw allgemein gültige Lösung.
Auch mit Windows-Software ist die Realisation nicht ganz so trivial. Da ist noch einiges an Handarbeit notwendig. Das hat Paddys Artikel sehr schön gezeigt. Sicherlich keine Raketenwissenschaft, aber eben auch nicht gänzlich ohne Anspruch. Wer das Wissen und die Ausdauer für die Realisierung unter Windows hat, wird dies auch mit Linux schaffen.
Prinzipiell eine gute Idee der ich auch schon nachgegangen bin. Was mich jedoch bei der Linux-Variante etwas stört ist, dass es keine vernünftige Live-View Möglichkeit gibt. Natürlich gibt es die Preview-Option, jedoch wird diese beispielsweise von meinen zwei Kameras nicht unterstützt. Insofern ist eine reine Linux-Variante auch ein Kompromiss beim Funktionsumfang, also in meinem Fall der Verzicht auf Preview.
Hallo!
Danke für den tollen Beitrag! 🙂
Eine Frage als Linux-Neuling…
ist es möglich das Skript über den Auslöser an der Kamera zu starten??