Annons
Se molnen röra sig eller en plantan växer. Time-lapse-fotografering kan verkligen ge dig en känsla av hur världen fungerar på makroskopisk nivå, utöver allt som kan tänkas för den normala mänskliga upplevelsen av tid. Eller med andra ord: det kan förvandla att titta på färg torrt till något ganska intressant. Tyvärr, professionell tidsinställd utrustning - medan du lägger till möjligheten att rotera eller flytta din kamera - som den Ande kan kosta upp till $ 1000. Idag kommer vi att skapa en grundläggande tidsinställd kontroller utan rörelse - för DSLR eller en USB-webbkamera - med bara en Raspberry Pi.
Se till att kolla in alla våra andra bra Raspberry Pi-projekt för.
DSLR
Som vanligt kommer allt vårt arbete med Pi att göras via en SSH-kommandorad, och vi kan hämta filerna med SFTP med samma referenser om du har lagrat dem på Pi istället för kameran. Om du inte är säker på vad IP-adressen till din Pi är, logga in på din router och visa listan över för närvarande anslutna enheter - den bör rapportera sig själv korrekt.
Börja med att installera nödvändig programvara:
sudo apt-get install gphoto2. sudo apt-get install imagemagick.
GPhoto2 är ett kommandoradsverktyg för att direkt gränssnitt med stödda DSLR-kameror (se hela listan här). Jag använde en Canon Rebel T4i / 650D Canon Rebel T4i dSLR Review och GiveawayCanon har just släppt sin nya Rebel T4i - deras första (av förhoppningsvis många) äventyr till pekskärmens dSLR-värld. Denna kamera är ett steg upp från Canon Rebel T3i (vilket också gör den till den tredje ... Läs mer . Anslut nu din kamera till Pi via USB.
Eftersom jag har använt automatiska ISO-värden och AV-läge är installationen relativt enkel och vi kan fånga serien med bara kommandoraden - verktyget innehåller inbyggda tidsinställda parametrar. Här är det mest grundläggande kommandot du kan använda för att testa funktionerna:
gphoto2 - Capture-image-and-download
som överför filen till din Pi, eller
gphoto2 - Capture-image
för att behålla bilden på kameran. Vid 8 MB en pop är det kanske bäst att hålla dem på kameran och utföra filmarna efter faktum från en PC eller Mac.
Viktig: Som standard sparas bilder på SD-RAM, inte minneskortet i kameran. Vilket innebär att 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 fångstmålet:
gphoto2 --get-config / main / settings / capturetarget.
Titta på listan som den matar ut och ställ in målet på följande sätt och ersätt 1 med det som visas som ditt kort.
gphoto2 - set-config / main / settings / capturetarget = 1.
Bifoga för att fånga i tidsfördröjningsläge -F och -I för att ange det totala antalet ramar du vill fånga och tiden intervall mellan var och en. I det här exemplet är det att fånga en gång var 30 sekund för totalt 1440 bilder, som när den görs till en 24 FPS-film kommer att vara ungefär en minut. Jag tror inte att min kameras batteri kommer att hålla så länge ändå, men jag ser hur många jag får.
gphoto2 - Capture-image -F 1440 -I 30.
En fråga att tänka på; när kommandot har slutförts kan kameran stängas av och svara - du måste manuellt cykla strömbrytaren (åtminstone på min modell gjorde det). Detta bör inte vara ett problem ute i fältet när det används, men för teständamål blir det ganska irriterande. Om du känner till en fix för detta, låt mig veta i kommentarerna, snälla!
Skapa en film
Överför filerna till din stationära dator för behandling. På en Mac har jag hittat det enklaste är att använda kommandoraden, men du behöver det XCode, homebrew, och MPlayer installeras först. För att göra detta, ladda ner först Xcode från App Store (det är gratis), sedan från Inställningar -> Nedladdningar fliken, aktivera Kommandoradsverktyg.
Kör sedan (en i taget):
ruby
Du bör nu ha de nödvändiga kodningskomponenterna installerade. Kör följande kommandon för att först skapa en lista med fångade .jpg-filer, sedan mata 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 skala = 640: 480 -o timelapse.avi -mf typ = jpeg: fps = 24 mf: //@list.txt.
Det här är vad jag slutade med, och använde 24 FPS från 330 bilder som tagits varje minut från morgon till mitten av eftermiddagen. Vädret är Storbritannien är verkligen så dåligt, från soligt till mulet i 5 minuters intervaller under dagen. Suck.
Ladda ner om du vill koda en film i Windows eller om du föredrar att använda ett GUI avidemux, och följ videoklippet nedan. Se till att dina foton numreras i följd.
https://www.youtube.com/watch? v = GZmkfk-YrG4 # t = 73
Använda en USB-webbkamera
Naturligtvis är det inte alla som har en DSLR, men snarare än att köpa en dyr officiell kameramodul för Raspberry Pi, kan du också utföra time-lapse-fotografering med hjälp av en USB-hylla webbkamera - i mitt fall, ett PS3-öga som vanligtvis är ett besvär för att få arbeta på PC eller Mac, men fungerar utanför rutan på Pi. Du kan behöva använda en driven USB-hub, och kamerastöd är det oärlig.
Kontrollera först om din webbkamera har upptäckts korrekt.
ls -l / dev / video *
Förhoppningsvis kommer du att se / dev / video0 listas så här:
Då kan vi gå vidare med att installera programvaran för webbinspelning och ta ett testfoto.
sudo apt-get install fswebcam.
fswebcam -d / dev / video0 -r 640x480 test.jpeg.
Radera filen med:
rm test.jpg.
Ta några testbilder så att du kan placera kameran på rätt sätt, så kommer vi att fortsätta med time-lapse-skriptet.
mkdir timelapse. nano runtimelapse.
Klistra in följande:
#! / Bin / bash. # Timelapse-controller för USB-webbkamera DIR = / home / pi / timelapse x = 1. medan [$ x -le 1440]; do filename = $ (date -u + "% d% m% Y_% H% M-% S"). jpg fswebcam -d / dev / video0 -r 640x480 $ DIR / $ filnamn x = $ (($ x + 1)) sova 10; Gjort;
För teständamål har jag ställt in väntetiden mellan bilderna till 10 sekunder. När du faktiskt börjar fånga, kanske du vill ändra det till varje minut istället. Ändra följande rad för att bestämma hur många ramar som ska tas, i exemplet är det 1440:
medan [$ x -le 1440]; do.
För att göra skriptet körbart, använd:
chmod 755 runtimelapse.
Kör sedan det med:
./runtimelapse.
Skapa en film
Fortfarande på SSH-kommandoraden kommer vi att försöka sy filmen direkt på Pi - om du har tagit tusentals bilder och din webbkamera är högre upplösning, du kanske tycker att detta är skrämmande långsamt, i vilket fall bläddra upp till filminstruktionerna för DSLR och överföra filerna till din PC med 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 typ = jpeg: fps = 24 mf: //@list.txt.
Om allt verkar bra men du får en fil på 0 kB, betyder det att det inte finns tillräckligt med utrymme på din enhets temp-mapp. Jag löst detta med en ren installation och utvidgade rotsystemet igen - det verkar som om BTSync hade trasslat upp några tempfiler.
Här är den färdiga scenen från en USB-webbkamera, från sen eftermiddag till mörker.
Detta var mycket lättare än jag trodde att det skulle bli - och jag skulle inte bli förvånad över att hitta någon i kommentarerna med en ännu enklare metod! Ge det en titt på en fascinerande livssyn som annars är svår att förstå och dela en länk till dina skapelser i kommentarerna eller andra tidsinställda videor som du har haft särskilt inspirerande.
James har en kandidatexamen i artificiell intelligens och är CompTIA A + och Network + certifierad. Han är ledande utvecklare av MakeUseOf och tillbringar sin fritid med att spela VR-paintball och brädspel. Han har byggt datorer sedan han var liten.