Styr dit digitalkamera fra computeren

Open Source-programmet gphoto gør, at du kan styre dit digital-kamera fra din computer. Det giver dig en masse nye muligheder, og giver dit kamera nyt liv. Du kan f.eks. lave time lapse-optagelser selvom dit kamera ikke har den funktion. Du kan også lave egne programmer der automatisk gør noget med de billeder du tager.

Du kan bruge gphoto med  langt over 1500 forskellige kameraer. Måske kan du bruge et gammelt kamera der nu bare ligger i skuffen og samler støv?

Undersøg om dit kamera er på listen over kameraer der kan bruges med gphoto.

Jeg bruger Linux-styresystemet Ubuntu på min computer. Du kan downloade Ubuntu gratis her (Det er Open Source). Du kan sikkert køre gphoto på din computer selv om du ikke bruger et Linux-system, men det er ikke noget jeg har erfaring med.

Ubuntu skal du installere pakken gphoto2.  Åben en terminal, og installér programmet ved at skrive sudo apt-get install gphoto2.

Forbind computeren og dit kamera

Så er vi klar til at eksperimentere. Forbind dit kamera med din computer med et USB-kabel og tænd det. Lad os se om gphoto kan se kameraet. Jeg  bruger funktionen –auto-detect. Den første linje i blokken herunder er det jeg skriver, de følgende linjer er det computeren svarer.

gphoto2 --auto-detect
Model Port
----------------------------------------------------------
Canon EOS 1000D usb:003,008

Det ser godt ud! Kameraet er fundet, og modellen er den rigtige. Et lille tip: Hvis din computer automatisk mounter dit kamera når du tilslutter det til din computer, kan gphoto sikkert ikke se det da kameratet så bruges af et andet program. Unmount kameraet før du bruger gphoto.

Lad os prøve at se hvilke funktioner kameraet har med funktionen –abilities.

gphoto2 --abilities
Abilities for camera             : Canon EOS 1000D
Serial port support              : no
USB support                      : yes
Capture choices                  :
: Image
: Preview
Configuration support            : yes
Delete selected files on camera  : yes
Delete all files on camera       : no
File preview (thumbnail) support : yes
File upload support              : yes

Der er en masse muligheder. Det vigtigste er, at jeg kan tage billeder. Det kan jeg da jeg har muligheden Image under Capture choices.

Tag billeder direkte til din computer

Når jeg har mit kamera sat til computeren, kan jeg gemme billederne direkte på den i stedet for at skulle hente billederne fra kameraet efter jeg har fotograferet. Det kan gøre mange opgaver nemmere. Det kan være at du f.eks. skal dokumentere noget du har bygget, eller tage produkt-billeder til en webshop.

Jeg bruger nu gphoto med funktionen –capture-tethered. Hvert nyt billede jeg tager mens gphoto kører, bliver automatisk hentet over på min computer. Når jeg ikke vil tage flere billeder, må jeg selv afbryde programmet ved at trykke Ctrl+C på tastaturet.

gphoto2 --capture-tethered
Waiting for events from camera. Press Ctrl-C to abort.
Saving file as capt0000.jpg
Deleting 'capt0000.jpg' from folder '/'...
Saving file as capt0001.jpg
Deleting 'capt0001.jpg' from folder '/'...
^C
Cancelling...

Jeg har nu taget to billeder billeder mens kameraet var tilsluttet computeren. Derefter afbrød jeg programmet ved at trykke Ctrl+C. Lad os se hvad jeg har liggende på min computer. Jeg bruger Linux’ standard-kommando ls for at få en liste over filer i mit bibliotek.

ls -lh
total 6.7M
-rw-rw-r-- 1 tbp tbp 3.4M Jan 12 22:51 capt0000.jpg
-rw-rw-r-- 1 tbp tbp 3.4M Jan 12 22:51 capt0001.jpg

Det ser rigtigt ud. To filer i .jpg-format som forventet.

Tag automatisk et billede og gem det på computeren

Nu vil jeg prøve at tage et enkelt billede fra kommandolinjen. Denne gang vil jeg selv bestemme hvad filen skal hedde. Jeg bruger –filename til at angive navnet på min fil som test.jpg. Forestil dig, at du kan kalde gphoto fra et andet program for at tage et billede. Det kunne f.eks. være i en fotoautomat du kunne bygge eller noget helt andet.

gphoto2 --capture-image-and-download --filename test.jpg
New file is in location /capt0000.jpg on the camera
Saving file as test.jpg
Deleting file /capt0000.jpg on the camera
Deleting 'capt0000.jpg' from folder '/'...

Kameraet taget et billede. Det overføres med det samme til min computer som test.jpg og slettes fra kameraet.

Lav time lapse-sekvenser

Det er også muligt at lave time lapse-optagelser med gphoto. Det kunne f.eks. være af en solnedgang, en blomst der springer ud eller noget helt andet.

Lad mig prøve at tage 3 billeder med 60 sekunders  pause mellem hvert billede.

Jeg angiver pausen mellem billederne i sekunder med –interval. Det antal billeder jeg vil tage angiver jeg med –frames. Hvis jeg ikke angiver et antal frames, bliver gphoto ved med at tage billeder indtil programmet stoppes.

Denne gang vil jeg gerne navngive mine billedfiler med billednummeret efterfulgt af teksten _test.jpg. Med koden %n kan jeg referere til nummeret på det billede det tages. Med koden %04n kan jeg formatere billedets nummer som et tal på 4 cifre med foranstillede 0’er. F.eks. bliver tallet 13 så formateret som 0013, og tallet 2 som 0002. Med –filename %04n_test.jpg, angiver jeg at mine filer navngives med et nummer på 4 cifre efterfulgt af teksten _test.jpg.

gphoto2 --capture-image-and-download --interval 60
--frames 3 --filename %04n_test.jpg

Time-lapse mode enabled (interval: 60s).
Capturing frame #1/3...
Waiting for next capture slot 59 seconds...
New file is in location /capt0000.jpg on the camera
Saving file as 0001_test.jpg
Deleting file /capt0000.jpg on the camera
Deleting 'capt0000.jpg' from folder '/'...
Capturing frame #2/3...
Waiting for next capture slot 59 seconds...
New file is in location /capt0001.jpg on the camera
Saving file as 0002_test.jpg
Deleting file /capt0001.jpg on the camera
Deleting 'capt0001.jpg' from folder '/'...
Capturing frame #3/3...
New file is in location /capt0002.jpg on the camera
Saving file as 0003_test.jpg
Deleting file /capt0002.jpg on the camera
Deleting 'capt0002.jpg' from folder '/'...

Det ser rigtigt ud. Lad os se hvilke filer vi har liggende.

ls -lh
total 12M
-rw-rw-r-- 1 tbp tbp 3.7M Jan 12 21:13 0001_test.jpg
-rw-rw-r-- 1 tbp tbp 3.7M Jan 12 21:14 0002_test.jpg
-rw-rw-r-- 1 tbp tbp 3.7M Jan 12 21:15 0003_test.jpg

Det fungerer, der ligger tre nummererede jpg-filer taget med med 60 sekunders mellemrum. Filnavne er som jeg ønsker: Billedets nummer efterfulgt af teksten _test.jpg.

Kald et andet program fra gphoto

Vi har nu den basale brug af gphoto på plads. Lad os slutte af med en introduktion til  hvordan man kan lave et program der bruger de billeder man tager.

Med funktionen –hook-script, kan man angive et program som gphoto skal køre nåret billede er blevet taget og hentet over på computeren.

Jeg har lavet et meget simpelt program, der hver gang jeg taget et billede med gphoto, åbner det på computeren så jeg kan vurdere om det er godt, eller om jeg skal tage et nyt billede. Her følger mit shell script der åbner billedfremviseren eog med det seneste billede hver gang jeg tager et billede. Jeg har kaldt mit program for gphoto_open.sh.

#!/bin/bash
if [ $ACTION == 'download' ]; then
eog $ARGUMENT
fi

Herunder kan du se hvordan jeg kører gphoto så mit program bliver kaldt hver gang jeg tager et billede. Forestil dig hvor praktisk det er, hvis du f.eks. er ved at tage portrætbilleder.

gphoto2 --capture-tethered --hook-script gphoto_open.sh

Nu er du godt rustet til at give dit kamera et helt nyt liv sammen med din computer. For at lære mere om gphoto kan du besøge www.gphoto.org. Ved at skrive man gphoto2 i terminalen, kan du se manualen for gphoto.