Tag billeder med Raspberry Pi

Med kamera-modulet til minicomputeren Raspberry Pi, er det nemt at lave programmer der tager billeder. I denne artikel, beskriver jeg hvordan man aktiverer kameraet, og tager billeder fra kommandolinjen med programmet raspistill. Du skal kende til brugen af komandolinjen for at få det fulde udbytte af artiklen. Hvis det er noget du ikke er fortrolig med, bør du først lære hvordan man bruger terminalen på Raspberry Pi.

New Raspberry Pi camera module

Forbind kameraet

Det første der skal gøres, er at forbinde dint kamera med din Raspberry Pi.Du skal forbinde kameraets fladkabel med stikket der er markeret med teksten CAMERA på din Raspberry Pi. Du kan læse en kort beskrivelse på engelsk her. Alternativt, har YouTube-bruger Liz Upton lavet en kort video der viser hvordan du skal gøre. Vær opmærksom på, at du skal “åbne” stikket før du kan sætte fladkablet i.

Opdater firmware

Det kan være, at den firmware der ligger på din Raspberry Pi, skal opdateres til seneste version før du kan bruge dit kamera. Du skal derfor køre følgende kommando for at opdatere. Du vil blive bedt om et password. Som udgangspunkt er det ordet raspberry når du er brugeren pi. Husk, at din Raspberry Pi skal være forbundet til internettet for at kunne hente en evt. opdatering.

sudo rpi-update

Når du har opdateret firmware, skal du genstarte maskinen. Det kan du gøre med denne kommando.

sudo reboot

Aktiver kamera

For at kunne bruge kameraet, skal det aktiveres. Start Raspberry Pi’s konfigurations-værktøj med følgende kommando i terminalen.

sudo raspi-config

Du bliver nu præsenteret for en liste af menupunkter. Du skal vælge punktet 5 Enable Camera. Vælg herefter muligheden Enable. Du kommer nu tilbage til hovedmenuen. Vælg nu Finish, og sig så ja til at genstarte maskinen, og vent til den er bootet op igen.

Tag billeder med raspistill

Du kan styre kameraet fra kommandolinjen eller inde fra programmer skrevet i sproget Python. Du kan både optage video og stilbilleder. I denne artikel , bruger vi programmet raspistill til at tage stilbilleder. Du kan læse om alle mulighederne med raspistill her.

Tag et enkelt billede

Tag en enkelt billede. Gem det i filen billede.jpg. Billedet gemmes i den mappe du står i når du kører programmet.

raspistill ‐‐output billede.jpg

Du kan bruge parameteret ‐‐mode efterfulgt af et tallem mellem 0 of 7 til at bestemme hvilken opløsninger du ønsker at bruge. Ved at angive 7, tager du billeder i opløsningen 640×480 pixels. Du kan læse om hvad tallene 0 til 7 præcist angiver i dokumentationen af raspistill. Her følger et eksempel hvor jeg tager et billede i opløsningen 640×480 pixels.

raspistill ‐‐mode 7 ‐‐output billede_640x480.jpg

Som udgangspunkt, tager raspistill dit billedet 5 sekunder efter du har startet programmet. Dette kan du ændre med parameteret ‐‐timeout.  Du skal angive tiden i milisekunder. Hvis du vil vente f.eks. 1 sekund, skal altså skrive ‐‐timeout 1000. I det følgende eksempel, bruger jeg raspistill til at tage et billede med det samme. Jeg bruger ‐‐timeout 1, da det er den mindste pause man kan bruge. Hvis man bruger værdien 0, venter kameraet for evigt.

raspistill ‐‐timeout 1 ‐‐output billede.jpg

Optag time lapse

Man kan også lave time lapse-serier med raspistill. Med parameteret ‐‐timelapse, kan man angive hvor lang tid der skal være mellem billederne. Lige som for parameteret ‐‐timeout, som vi tidligere brugte, skal tiden angives i millisekunder. Hvis jeg f.eks. vil have 4 sekunder mellem mine billeder, skal jeg altså skrive ‐‐timelapse 4000. Hvis man skriver ‐‐timelapse 0, tager kameraet billeder så hurtigt det kan.

Med ‐‐timeout, bestemmer man hvor længe man vil blive ved med at tage billeder. Hvis man f.eks. vil tage billeder i periode på  30 sekunder, skal man skrive ‐‐timeout 30000. Hvis jeg ville tage en serie billeder over et 24 timer, ville jeg skulle angive tiden som 24 timer * 60 minutter * 60 sekunder * 1000 millisekunder = 86400000 millisekunder.

Nu hvor jeg tager mange billeder, kan jeg ikke blive ved med at bruge ‐‐output billede.jpg. Hvis jeg gjorde det, ville jeg hele tiden overskrive det foregående billede. Jeg ville altså ende med at kun have et enkelt billede (billede.jpg), uanset hvor mange billeder jeg tog. Derfor, vil jeg  gerne nummerere mine billeder.

Heldigvis, kan raspistill holde styr på hvor mange billeder den har taget. Antallet af billeder, kan men referere til ved at skrive %d som en del af det filnavn man angiver med ‐‐output.  Ved f.eks. at skrive ‐‐output billede_%d.jpg, får jeg nummereret mine billeder som billede_1.jpg, billede_2.jpg osv.

Jeg vil gerne have, at tallet i mine filnavne altid er fire cifre lang, derfor vil jeg gerne sætte nuller foran billedets nummer så længe det er nødvendigt. Dvs., så længe taller er under 1000. Ved at skrive ‐‐output billede_%04d.jpg, kommer billederne til at hedde billede_0001.jpg, billede_0002.jpg osv. Prøv at tage billeder i 30 sekunder med 1 sekund mellem hvert billede.

raspistill ‐‐timeout 30000 ‐‐timelapse 1000 ‐‐ouput billede_%04d.jpg

Du burde nu have 31 nummererede billederfiler. Hvorfor er der 31 billeder? Det første billede bliver taget ved tid 0, så det bruger ikke nogen af de 30 sekunder. Hvis du gerne vil have præcist 30 billeder, kan du skriver ‐‐timeout 29000 for at tage billeder i 29 sekunder.

Tag billeder med udløser

Du kan bruge raspistill som et traditionelt kamera med en udløser, så du kan tage billeder ved at trykke på tasten retur/enter. Denne funktion slås til med funktionen ‐‐keypress. Jeg vil gerne have kameraet til at køre i uendelig tid. Det kan jeg gøre ved at skrive ‐‐timeout 0. Når jeg på et tidspunkt ikke vil tage flere billeder, kan jeg afbryde raspistill ved at trykke på tasten x efterfulgt af tasten retur/enter.

raspistill ‐‐timeout 0 ‐‐keypress ‐‐output billede_%04d.jpg

1 thought on “Tag billeder med Raspberry Pi

Comments are closed.