Annonse
Se skyene bevege seg eller en frøplante vokse. Time-lapse-fotografering kan virkelig gi deg en følelse av hvordan verden fungerer på et makroskopisk nivå, utover alt som kan tenkes den normale menneskelige opplevelsen av tid. Eller andre ord: det kan gjøre at maling tørker til noe ganske interessant. Dessverre er det profesjonelt tidsforsinkelsesutstyr - som gir muligheten til å rotere eller bevege kameraet - som Genie kan koste opptil 1000 dollar. I dag lager vi en grunnleggende time-lapse-kontroller uten bevegelse - for DSLR eller et USB-webkamera - med bare en Raspberry Pi.
Sørg for å sjekke ut alle våre andre gode Raspberry Pi-prosjekter også.
DSLR
Som vanlig vil alt vårt arbeid med Pi utføres over en SSH-kommandolinje, og vi kan ta tak i filene ved å bruke 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 Pi-en din er, kan du logge på ruteren og se listen over tilkoblede enheter - den skal rapportere seg selv riktig.

Begynn med å installere 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 and GiveawayCanon har nettopp gitt ut sin nye Rebel T4i - deres første (av forhåpentligvis mange) eventyr i berøringsskjermen dSLR verden. Dette kameraet er et skritt opp fra Canon Rebel T3i (og gjør det også til den 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 med bare kommandolinjen - verktøyet inkluderer innebygde tidsforløpsparametere. Her er den mest grunnleggende kommandoen du kan bruke til å teste funksjonene:
gphoto2 - Capture-image-and-download
som vil overføre filen til din Pi, eller
gphoto2 - Capture-image
for å beholde bildet på kameraet. På 8 MB en pop er det muligens best å holde dem på kameraet og utføre filmsting etter faktum fra en PC eller Mac.
Viktig: Som standard blir bilder lagret på SD-RAM, ikke minnekortet i kameraet. Betydning at du vil miste dem alle (jeg snakker av erfaring). For å sikre at de faktisk sparer, må vi først sette fangstmålet:
gphoto2 --get-config / main / settings / capturetarget.
Se på listen det gir ut og sett målet som følger, erstatt 1 med det som vises som kortet ditt.
gphoto2 - set-config / main / settings / capturetarget = 1.
Hvis du vil ta bilder i tidsforløpsmodus, legger du ved -F og -JEG å spesifisere det totale antallet av rammer du vil fange, og tiden intervall mellom hver og en. I dette eksemplet er det å fange en gang hvert 30. sekund i totalt 1440 bilder, som når den blir gjort til en 24 FPS-film vil være omtrent et minutt. Jeg tror ikke batteriets kamera vil vare så lenge uansett, men jeg får se hvor mange jeg får.
gphoto2 - Capture-image -F 1440 -I 30.
En sære ting å huske på; etter at kommandoen er fullført, kan det hende at kameraet slås av og reagerer - du må sykle strømbryteren manuelt (i det minste, på min modell det gjorde). Dette skal 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!

Lage en film
Overfør filene til din stasjonære datamaskin for behandling. På en Mac har jeg funnet det enkleste er å bruke kommandolinjen, men du trenger det XCode, Hjemme brygget, og MPlayer installert først. For å gjøre dette, last ned først Xcode fra App Store (det er gratis), deretter fra Preferanser -> Nedlastinger fane, aktiver Kommandolinjeverktøy.

Så løp (en om gangen):
ruby

Du skal nå ha de nødvendige kodingskomponentene installert. Kjør følgende kommandoer for først å opprette en liste over de fangede .jpg-filene, deretter mate den listen i 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 skala = 640: 480 -o timelapse.avi -mf type = jpeg: fps = 24 mf: //@list.txt.
Dette er hva jeg endte opp med å bruke 24 FPS fra 330 bilder som ble skutt hvert minutt fra morgen til midt på ettermiddagen. Været er at Storbritannia virkelig er så ille, fra sol til overskyet i 5 minutters intervaller gjennom dagen. Sukk.
Last ned for å kode en film i Windows, eller hvis du foretrekker å bruke et GUI Avidemux, og følg videoopplæringen nedenfor. Forsikre deg om at bildene dine er nummerert i rekkefølge.
https://www.youtube.com/watch? v = GZmkfk-YrG4 # t = 73
Bruke et 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 en USB-hylle webkamera - i mitt tilfelle, et PS3 Eye som vanligvis er ganske vanskelig å jobbe på PC eller Mac, men som fungerer ut av boksen på Pi. Du må kanskje bruke en drevet USB-hub, og kamerastøtte er det tvilsom.
Kontroller først om webkameraet ditt har blitt oppdaget riktig.
ls -l / dev / video *
Forhåpentligvis får du se / dev / video0 oppført slik:

Da kan vi gå videre med å installere programvaren for fange webkameraer, og ta et testskudd.
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 for deg å plassere kameraet riktig, så fortsetter vi med time-lapse-skriptet.
mkdir timelapse. nano runtimelapse.
Lim inn følgende:
#! / Bin / bash. # Timelapse-kontroller for USB-webcam DIR = / home / pi / timelapse x = 1. mens [$ x -le 1440]; do filename = $ (date -u + "% d% m% Y_% H% M-% S"). jpg fswebcam -d / dev / video0 -r 640x480 $ DIR / $ filnavn x = $ (($ x + 1)) sove 10; gjort;
For testformål har jeg satt ventetiden mellom skudd som 10 sekunder. Når du faktisk begynner å fange, kan det være lurt å endre det til hvert minutt i stedet. Endre følgende linje for å bestemme hvor mange bilder du vil ta, i eksempelet er den satt som 1440:
mens [$ x -le 1440]; gjøre.
For å gjøre skriptet kjørbart, bruk:
chmod 755 runtimelapse.
Kjør den deretter ved å bruke:
./runtimelapse.

Lage en film
Fortsatt på SSH-kommandolinjen vil vi prøve å sy filmen direkte på Pi - hvis du har tatt tusenvis av bilder og webkameraet ditt er høyere oppløsning, kan det hende du synes dette er rystende sakte, i så fall bla deg opp til filminstruksjonene for DSLR, og overfør filene til din PC bruker 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 skala = 640: 480 -o timelapse.avi -mf type = jpeg: fps = 24 mf: //@list.txt.
Hvis det hele virker bra, men du får en fil på 0 KB, betyr det at det ikke er nok plass på enhetens temp-mappe. Jeg løste dette med en ren installasjon og utvidet rotsystemet igjen - det virker som om BTSync hadde rotet bort noen temp-filer.
Her er den ferdige scenen fra et USB-webkamera, fra sen ettermiddag til mørkt.
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 den en sjanse til et fascinerende livssyn som ellers er vanskelig å forstå, og del en lenke til kreasjonene dine i kommentarene eller andre tidsforfallsvideoer du har funnet spesielt inspirerende.
James har en BSc i kunstig intelligens, og er CompTIA A + og Network + sertifisert. Han er hovedutvikler av MakeUseOf, og bruker fritiden sin på å spille VR paintball og brettspill. Han har bygd pc-er siden han var liten.