Titta på molnen flytta eller en plantor växa. Time-lapse fotografering kan verkligen ge dig en känsla av hur världen fungerar på makroskopisk nivå, utöver allt som är tänkbart för den normala mänskliga erfarenheten av tiden. Eller andra ord: det kan vända sig att måla torrt till något ganska intressant. Tyvärr kan professionell time-lapse-utrustning - samtidigt som du lägger till förmågan att rotera eller flytta din kamera - som Genie kosta upp till $ 1000. Idag gör vi en grundläggande time-lapse-kontroller utan rörelse - för DSLR eller en USB-webbkamera - med bara en Raspberry Pi.
Var noga med att kolla in alla våra andra fantastiska Raspberry Pi-projekt också.
DSLR
Som vanligt kommer allt vårt arbete med Pi att ske över en SSH-kommandorad, och vi kan ta tag i filerna med SFTP med samma uppgifter om du har sparat dem på Pi istället för kameran. Om du inte är säker på vad din IP-adress är, logga in på din router och visa listan över anslutna enheter - den ska rapportera sig korrekt.
Börja med att installera en viss viktig mjukvara:
sudo apt-get install gphoto2 sudo apt-get install imagemagick
GPhoto2 är ett kommandoradsverktyg för att direkt koppla samman med DSLR-kameror (se hela listan här). Jag använde en Canon Rebel T4i / 650D Canon Rebel T4i dSLR Review och Giveaway Canon Rebel T4i dSLR Review och Giveaway Canon har precis släppt sin nya Rebel T4i - deras första (av hoppas många) äventyr i touchscreen dSLR-världen. Den här kameran är ett steg upp från Canon Rebel T3i (gör det till tredje ... Läs mer. Anslut din kamera till Pi via USB.
Eftersom jag har använt automatiska ISO-värden och AV-läge är inställningen relativt enkel och vi kan fånga serien genom att använda bara kommandoraden - verktyget innehåller inbyggda tidsförloppsparametrar. Här är det mest grundläggande kommandot du kan använda för att testa möjligheterna:
gphoto2 --capture-image-and-download
vilken kommer att överföra filen till din Pi, eller
gphoto2 --capture-image
för att hålla bilden på kameran. Vid 8 MB en pop är det kanske bäst att hålla dem på kameran och utföra filmstygn efter det faktum från en PC eller Mac.
Viktigt: Som standard sparas bilder på SD-RAM, inte minneskortet i kameran. Menar du kommer att förlora dem alla (jag talar av erfarenhet). För att säkerställa att de faktiskt sparar måste vi först ställa in infångningsmålet:
gphoto2 --get-config /main/settings/capturetarget
Titta på listan som den matar ut och ställ in målet enligt följande, byt ut 1 med det som visas som ditt kort.
gphoto2 --set-config /main/settings/capturetarget=1
För att fånga i tidsfördröjningsläge, lägg till -F och -I för att ange det totala antalet ramar du vill fånga och tidsintervallet mellan varje. I det här exemplet fångas en gång var 30: e sekund för totalt 1440 ramar, som när de görs till en 24 FPS-film kommer att vara ungefär en minut. Jag tror inte att min kamera batteri kommer att vara så länge, men jag ser hur många jag får.
gphoto2 --capture-image -F 1440 -I 30
En aning att komma ihåg; Efter att kommandot har slutförts kan kameran stängas av och blir inte svarande - du måste manuellt slå på strömbrytaren (åtminstone på min modell gjorde det). Detta borde inte vara ett problem i fältet när det används, men för teständamål blir det ganska irriterande. Om du känner till en åtgärd för detta, låt mig veta i kommentarerna, tack!
Göra en film
Överför filerna till din stationära dator för bearbetning. På en Mac har jag funnit det enklaste att använda kommandoraden, men du behöver XCode, Homebrew och MPlayer installerat först. För att göra detta, ladda ner först Xcode från App Store (det är gratis), och aktivera sedan Kommandoradsverktyg på fliken Inställningar -> Nedladdningar .
Kör sedan (en åt gången):
ruby<(curl -fsSkL raw.github.com/mxcl/homebrew/go) brew doctor brew install mplayer
Du bör nu ha de nödvändiga kodningskomponenterna installerade. Kör följande kommandon för att först skapa en lista över de fångade .jpg"-filerna, mata sedan den listan till mencoder, ett verktyg som används för att skapa videor. Ändra FPS-värdet om du föredrar att filmen går snabbare.
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
Här är vad jag slutade med, med 24 FPS från 330 bilder skott varje minut från morgon till mitten eftermiddag. Vädret är Storbritannien är verkligen så dåligt, från soligt till mulet i 5 minuters mellanrum hela dagen. Suck.
Om du vill koda en film i Windows, eller om du föredrar att använda en GUI, ladda ner Avidemux och följ videomanualen nedan. Se till att dina foton numreras i följd.
Använda en USB-webbkamera
Naturligtvis har inte alla en DSLR, men i stället för att köpa en dyr officiell kameramodul för Raspberry Pi, kan du också utföra tidsfotografering med en USB-webbkamera - i mitt fall ett PS3-öga som är oftast ganska krångel för att få jobba på PC eller Mac, men fungerar ur lådan på Pi. Det kan hända att du behöver använda en USB-hubb, och kamerans stöd är sketchy.
Kontrollera först om din webbkamera har upptäckts korrekt.
ls -l /dev/video*
Förhoppningsvis kommer du att se / dev / video0 listade så här:
Då kan vi fortsätta med att installera programvaran för webbkamera och ta ett testskott.
sudo apt-get install fswebcam
fswebcam -d /dev/video0 -r 640x480 test.jpeg
Ta bort filen med:
rm test.jpg"
Ta några testbilder så att du kan placera kameran på lämpligt sätt, så fortsätter vi med time-lapse-skriptet.
mkdir timelapse nano runtimelapse
Klistra in följande:
#!/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;
För teständamål har jag satt väntetiden mellan bilder som 10 sekunder. När du faktiskt börjar fånga, kanske du vill ändra det till varje minut i stället. Ändra följande rad för att bestämma hur många ramar som ska fångas, i exemplet är det inställt som 1440:
while [ $x -le 1440 ]; do
För att göra skriptet körbart, använd:
chmod 755 runtimelapse
Kör sedan det med:
./runtimelapse
Göra en film
Fortfarande på SSH-kommandoraden försöker vi sätta filmen direkt på Pi - om du har tagit tusentals bilder och din webbkamera är högre upplösning, kan det hända att det här är skrämmande långsamt, i vilket fall bläddra upp till filmen instruktioner för DSLR, och överför filerna till din dator med hjälp av 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
Om allt verkar bra, men du får en 0 KB filutgång, betyder det att det inte finns tillräckligt med utrymme på din temp-mapp för enheter. Jag löste det här med en ren installation och utvidgade rotsystemet igen - det verkar som om BTSync hade krossat några tempfiler.
Här är den färdiga scenen från en USB-webbkamera, från sen eftermiddag till mörk.
Det var mycket lättare än jag trodde det skulle vara - och jag skulle inte bli förvånad över att hitta någon i kommentarerna som beskriver en ännu enklare metod! Ge det en gå för en fascinerande utsikt över livet som annars är svårt att förstå, och dela en länk till dina skapelser i kommentarerna eller andra gången videor du har hittat särskilt inspirerande.