Hvordan fange Time-Lapse Photography med din Raspberry Pi og DSLR eller USB Webcam

Time-lapse fotografering kan virkelig gi deg en følelse av hvordan verden fungerer på makroskopisk nivå, utover alt som er mulig for den normale menneskelige opplevelse av tiden.

Time-lapse fotografering kan virkelig gi deg en følelse av hvordan verden fungerer på makroskopisk nivå, utover alt som er mulig for den normale menneskelige opplevelse av tiden.
Annonse

Se på skyene flytte eller en frøplante vokse. Time-lapse fotografering kan virkelig gi deg en følelse av hvordan verden fungerer på makroskopisk nivå, utover alt som er mulig for den normale menneskelige opplevelse av tiden. Eller andre ord: det kan slå på å male tørke til noe ganske interessant. Dessverre kan profesjonell tidsløpsutstyr - samtidig som du legger evnen til å rotere eller flytte kameraet - som Genie koster opptil $ 1000. I dag lager vi en grunnleggende time-lapse-kontroller uten bevegelse - for DSLR eller et USB-webcam - med bare en Raspberry Pi.

Husk å sjekke ut alle våre andre fantastiske Raspberry Pi-prosjekter også.

DSLR

Som vanlig vil alt vårt arbeid med Pi gjøres over en SSH-kommandolinje, og vi kan ta tak i filene ved hjelp av SFTP med samme legitimasjon hvis du har lagret dem på Pi i stedet for kameraet. Hvis du ikke er sikker på hva IP-adressen til din Pi er, logg deg på ruteren din og se listen over tilkoblede enheter for øyeblikket - den skal rapportere seg riktig.

tilkoblede-innretninger

Begynn med å installere noen viktig programvare:

sudo apt-get install gphoto2 sudo apt-get install imagemagick 

GPhoto2 er et kommandolinjeverktøy for direkte grensesnitt med støttede DSLR-kameraer (se hele listen her). Jeg brukte en Canon Rebel T4i / 650D Canon Rebel T4i dSLR Review og Giveaway Canon Rebel T4i dSLR Review og Giveaway Canon har nettopp sluppet sin nye Rebel T4i - deres første (forhåpentligvis mange) eventyr i touchscreen dSLR verden. Dette kameraet er et steg opp fra Canon Rebel T3i (gjør det også til det tredje ... Les mer. Nå, koble kameraet til Pi via USB.

Siden jeg har brukt automatiske ISO-verdier og AV-modus, er oppsettet relativt enkelt, og vi kan fange serien ved hjelp av bare kommandolinjen - verktøyet inneholder innebygde tidsavbruddsparametere. Her er den mest grunnleggende kommandoen du kan bruke til å teste egenskapene:

 gphoto2 --capture-image-and-download 

som overfører filen til din Pi, eller

 gphoto2 --capture-image 

for å holde bildet på kameraet. Ved 8 MB en pop, er det muligens best å holde dem på kameraet og utføre filmstingene etter en PC eller Mac.

Viktig: Som standard lagres bilder på SD-RAM, ikke minnekortet i kameraet. Betyr at du vil miste dem alle (jeg snakker av erfaring). For å sikre at de faktisk lagrer, må vi først sette fangstmålet:

 gphoto2 --get-config /main/settings/capturetarget 

Se på listen den utgir og sett målet som følger, erstatt 1 med det som vises som ditt kort.

 gphoto2 --set-config /main/settings/capturetarget=1 

For å fange i time-lapse-modus legger du til -F og -I for å spesifisere det totale antall bilder du vil fange, og tidsintervallet mellom hver enkelt. I dette eksemplet fanges en gang hvert 30. sekund for totalt 1440 rammer, som når de blir laget til en 24 FPS-film, vil være omtrent ett minutt. Jeg tror ikke kameraets batteri vil vare lenge, men jeg ser hvor mange jeg får.

 gphoto2 --capture-image -F 1440 -I 30 

En ting å huske på; Etter at kommandoen er fullført, kan kameraet slå av og blir uforsvarlig - du må manuelt slå av strømbryteren (i hvert fall på modellen min gjorde det). Dette bør ikke være et problem ute i feltet når det er i bruk, men for testformål blir det ganske irriterende. Hvis du vet en løsning for dette, gi meg beskjed i kommentarene, vær så snill!

gphoto2 arbeidende

Lag en film

Overfør filene til din stasjonære datamaskin for behandling. På en Mac har jeg funnet det enkleste å bruke kommandolinjen, men du må ha XCode, Homebrew og MPlayer installert først. For å gjøre dette, må du først laste ned Xcode fra App Store (det er gratis), og deretter aktivere Kommandolinjeverktøy fra kategorien Innstillinger -> Nedlastinger .

Xcode-install-CLT

Kjør deretter (en om gangen):

 ruby<(curl -fsSkL raw.github.com/mxcl/homebrew/go) brew doctor brew install mplayer 

Hjemme brygget

Du bør nå ha de nødvendige kodingskomponentene installert. Kjør følgende kommandoer for å først opprette en liste over de fangede .jpg"-filene, og bruk deretter listen til mencoder, et verktøy som brukes til å lage videoer. Endre FPS-verdien hvis du foretrekker at filmen går raskere.

 cd ls *.jpg">list.txt mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=640:480 -o timelapse.avi -mf type=jpeg:fps=24 mf://@list.txt 

Her er hva jeg endte med, med 24 FPS fra 330 bilder skutt hvert minutt fra morgen til midten av ettermiddagen. Været er Storbritannia egentlig er så ille, fra solskinn til overskyet i 5 minutters intervaller gjennom dagen. Sukk.

For å kode en film i Windows, eller hvis du foretrekker å bruke en GUI, last ned Avidemux, og følg videoopplæringen nedenfor. Kontroller at bildene dine er nummerert i rekkefølge.

Bruke en USB-webkamera

Selvfølgelig har ikke alle en DSLR, men i stedet for å kjøpe en dyr, offisiell kameramodul for Raspberry Pi, kan du også utføre time-lapse fotografering ved hjelp av et USB-web-kamera på en hylle - i mitt tilfelle et PS3-øye som er Vanligvis litt trøbbel for å få jobbe på PC eller Mac, men jobber ut av boksen på Pi. Du må kanskje bruke et drevet USB-hub, og kamerastøtten er sketchy.

Kontroller først om webkameraet ditt er blitt oppdaget riktig.

 ls -l /dev/video* 

Forhåpentligvis ser du / dev / video0 oppført som dette:

dev-Video0

Da kan vi fortsette med å installere webcam-programvaren, og ta et testbilde.

 sudo apt-get install fswebcam 
 fswebcam -d /dev/video0 -r 640x480 test.jpeg 

Slett filen med:

 rm test.jpg" 

Ta noen testbilder for å gjøre det mulig å plassere kameraet på riktig måte, så fortsetter vi med time-lapse-skriptet.

 mkdir timelapse nano runtimelapse 

Lim inn følgende:

 #!/bin/bash # Timelapse controller for USB webcam DIR=/home/pi/timelapse x=1 while [ $x -le 1440 ]; do filename=$(date -u +"%d%m%Y_%H%M-%S").jpg" fswebcam -d /dev/video0 -r 640x480 $DIR/$filename x=$(( $x + 1 )) sleep 10; done; 

For testing har jeg satt ventetiden mellom bilder som 10 sekunder. Når du faktisk begynner å fange, vil du kanskje endre det til hvert minutt i stedet. Endre følgende linje for å bestemme hvor mange rammer som skal fanges, i eksempelet er det satt som 1440:

 while [ $x -le 1440 ]; do 

For å gjøre skriptet kjørbart, bruk:

 chmod 755 runtimelapse 

Kjør deretter den ved å bruke:

 ./runtimelapse 

usb-arbeider

Lag en film

Fortsatt på SSH-kommandolinjen, prøver vi å stikke filmen direkte på Pi - hvis du har tatt tusenvis av bilder og ditt webkamera er høyere oppløsning, kan du finne at dette er forferdelig sakte, i så fall bla opp til filmen instruksjoner for DSLR, og overfør filene til PCen din ved hjelp av SFTP.

usb-sftp

 cd timelapse ls *.jpg">list.txt sudo apt-get install mencoder mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=640:480 -o timelapse.avi -mf type=jpeg:fps=24 mf://@list.txt 

Hvis alt ser bra ut, men du får en 0 KB filutgang, betyr det at det ikke er nok plass på enhetens tempmappe. Jeg løst dette med en ren installasjon og utvidet rotsystemet igjen - det virker som om BTSync hadde ødelagt noen tempfiler.

Her er den ferdige scenen fra et USB-webkamera, fra sen ettermiddag til mørk.

Dette var langt enklere enn jeg trodde det ville være - og jeg ville ikke bli overrasket over å finne noen i kommentarene som beskriver en enda enklere metode! Gi det en tur for et fascinerende livsutsikt som ellers er vanskelig å forstå, og dele en kobling til kreasjonene dine i kommentarene eller andre tidspunkter som du har funnet spesielt inspirerende.

In this article