Nyheter i Android, Telefoner, Prylar Och Recensioner

Så här tar du tidsfördröjda fotografier med din Raspberry Pi och DSLR eller USB-webbkamera

Se molnen röra sig eller en planta växa. Time-lapse-fotografering kan verkligen ge dig en känsla av hur världen fungerar på en makroskopisk nivå, bortom allt som är tänkbart för den normala mänskliga tidsupplevelsen. Eller med andra ord: det kan göra att se färg torka till något ganska intressant. Tyvärr kan professionell time-lapse-utrustning – samtidigt som den lägger till möjligheten att rotera eller flytta din kamera – som Genie kosta upp till $1000. Idag kommer vi att göra en grundläggande time-lapse-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 fantastiska Raspberry Pi-projekt också.

DSLR

Som vanligt kommer allt vårt arbete med Pi att göras över en SSH-kommandorad, och vi kan ta 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 se listan över för närvarande anslutna enheter – den bör rapportera sig själv korrekt.

Börja med att installera viktig programvara:

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

GPhoto2 är ett kommandoradsverktyg för direkt gränssnitt med DSLR-kameror som stöds (se hela listan här). Jag använde en Canon Rebel T4i / 650D. Anslut nu 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 med bara kommandoraden – verktyget inkluderar inbyggda time lapse-parametrar. Här är det mest grundläggande kommandot du kan använda för att testa funktionerna:

gphoto2 --capture-image-and-download

som kommer att överföra filen till din Pi, eller

gphoto2 --capture-image

för att behålla bilden på kameran. Med 8 MB per pop är det möjligen bäst att ha dem på kameran och utföra filmsammanfogningen i efterhand från en PC eller Mac.

Viktig: Som standard sparas bilder på SD-RAM, inte minneskortet i kameran. Det betyder 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 den skickar ut och ställ in målet enligt följande, ersätt 1 med det som visas som ditt kort.

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

För att fånga i time-lapse-läge, lägg till -F och -Jag för att ange det totala antalet ramar du vill fånga, och tiden intervall mellan var och en. I det här exemplet, fånga en gång var 30:e sekund för totalt 1440 bildrutor, vilket när det görs till en 24 FPS-film motsvarar ungefär en minut. Jag tror inte att min kameras batteri håller så här länge i alla fall, men jag får se hur många jag får.

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

En egenhet att ha i åtanke; efter att kommandot har slutförts kan kameran stängas av och inte svara – du måste växla strömbrytaren manuellt (åtminstone på min modell gjorde det det). Detta borde inte vara ett problem ute på fältet när det används, men för teständamål blir det ganska irriterande. Om du vet en lösning för detta, låt mig veta i kommentarerna, snälla!

Relaterad  Hur man delar och samarbetar på en påminnelselista med en Mac

Att göra en film

Överför filerna till din stationära dator för bearbetning. På en Mac har jag tyckt att det enklaste är att använda kommandoraden, men du behöver XCode, Hembryggtoch MPlayer installeras först. För att göra detta, ladda först ner Xcode från App Store (det är free), sedan från Inställningar -> Nedladdningar flik, aktivera Kommandoradsverktyg.

Kör sedan (en i taget):

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 in listan i 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 <directory with your time-lapse photos>
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

Det här är vad jag slutade med, med 24 FPS från 330 bilder tagna varje minut från morgon till mitt på eftermiddagen. Vädret är att Storbritannien verkligen är så dåligt, från soligt till mulet med 5 minuters mellanrum under dagen. Suck.

För att koda en film i Windows, eller om du föredrar att använda ett GUI, ladda ner Avidemux och följ videohandledningen nedan. Se till att dina foton är numrerade i följd.

Använda en USB-webbkamera

Naturligtvis har inte alla en DSLR, men snarare än att köpa en dyr officiell kameramodul till Raspberry Pi, kan du också utföra time-lapse-fotografering med hjälp av en vanlig USB-webbkamera – i mitt fall, ett PS3 Eye som är vanligtvis ganska krångligt att få arbeta på PC eller Mac, men fungerar direkt på Pi. Du kan behöva använda en USB-hubb med strömförsörjning och kamerastödet är skissartat.

Relaterad  Samsung Unpacked 2019: Så här följer du Galaxy S10 och Fold Conference Live

Kontrollera först om din webbkamera har upptäckts korrekt.

ls -l /dev/video*

Förhoppningsvis kommer du att se /dev/video0 listad så här:

Sedan kan vi fortsätta med att installera programvaran för webbkamerafångst och ta en testbild.

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å rätt sätt, sedan 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;

I testsyfte 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 bildrutor som ska fångas, i exemplet är det satt till 1440:

while [ $x -le 1440 ]; do

För att göra skriptet körbart, använd:

chmod 755 runtimelapse

Kör sedan med:

./runtimelapse

Att göra en film

Fortfarande på SSH-kommandoraden kommer vi att försöka sätta ihop filmen direkt på Pi – om du har tagit tusentals bilder och din webbkamera har högre upplösning, kan du tycka att detta är fruktansvärt långsamt, i vilket fall scrolla upp till filmen instruktioner för DSLR och överför 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 scale=640:480 -o timelapse.avi -mf type=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 i enhetens temporära mapp. Jag löste detta med en ren installation och utökade rotsystemet igen – det verkar som att BTSync hade förstört några temporära filer.

Relaterad  Ett Elden Ring-fan har räknat ut att spelare har sett cirka 13 % av hela kartan hittills.

Här är den färdiga scenen från en USB-webbkamera, från sen eftermiddag till mörker.

Det här var mycket enklare ä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 chans för en fascinerande syn på livet som annars är svår att förstå, och dela en länk till dina skapelser i kommentarerna eller andra time lapse-videor som du har funnit särskilt inspirerande.

Om författaren

James Bruce (720 publicerade artiklar)

James har en BSc i artificiell intelligens och är CompTIA A+ och Network+ certifierad. När han inte är upptagen som Hardware Review Editor, gillar han LEGO, VR och brädspel. Innan han började på MakeUseOf var han ljustekniker, engelskalärare och datacenteringenjör.

Mer från James Bruce

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera