Koble et analogt kamera til en raspberry pi. Videoovervåkingsserver som bruker Raspberry Pi. Lage timelapse-video

La oss se på metoder for å koble kameraet til Raspberry Pi på riktig måte og jobbe med det gjennom terminalvinduet og bruke Python-programmeringsspråket.
Relatert materiale:
Når du kobler kameraet til Raspberry, husk følgende:
  • Kameraet er redd for statisk elektrisitet; det anbefales å berøre det under bruk gjennom antistatisk materiale
  • kameraet bruker 250 mA - når du bruker en middelmådig Malina-strømforsyning, kan tilkobling av kameraet føre til mangel på strøm når kameraet fungerer aktivt
  • det er ingen mikrofon i kameraet
  • toppen av kameraet er plassert på siden motsatt av kabelutgangen, men det er en spesiell kommando for å reflektere bildet vertikalt - mer om det nedenfor.

Forbindelse

Det anbefales å koble kameraet til en avslått Raspberry. Du kan raskt slå av Raspberry med kommandoen
sudo avstengning nå
CSI-kjedekontakten er plassert ved siden av HDMI: Fordelen med å koble kameraet gjennom denne kontakten, i motsetning til USB, er at den avlaster prosessoren ved overføring av data via CSI-grensesnittet
For enkel kamerafiksering er det ferdige løsninger, for eksempel - Akrylholder.
Kameragrensesnittet må aktiveres i Raspberry-innstillingene:
Etter å ha aktivert kameraet (hvis nødvendig), må Malina startes på nytt: sudo reboot now
For å jobbe med kameraet har Raspbian allerede de nødvendige verktøyene og driverne forhåndsinstallert. La oss oppdatere pakkene for å bruke de nyeste versjonene: sudo apt-get update -y sudo apt-get dist-upgrade -y Hvis alt er gjort riktig, la oss prøve å få en testramme fra kameraet - lag en mappe for bilder, gå til den og utfør bildeopptakskommandoen: mkdir ~/pi_cam/ cd ~/pi_cam/ raspistill -v -o test.jpg
Ved feil bør du sjekke de foregående trinnene, eller ringe kontaktene på kameraet og på Malina.
Følgende pakker for arbeid med kameraet er forhåndsinstallert i Raspbian OS:
  • raspivid, raspvidyuv - videoopptak
  • raspistill, raspiyuv - ta bilder
En komplett veiledning til de listede verktøyene er tilgjengelig på engelske språk er på av. Raspberry Pi nettsted
Alle verktøyene startes fra terminalen og er ganske enkle å bruke.
Pakker med navn som slutter på "yuv" bruker ikke kodingskomponenten - de lagrer den "rå" ubehandlede informasjonen mottatt av kamerasensoren. La oss se på å jobbe med hver pakke, men først vil vi bli kjent med listen over kameraparametere som er felles for alle pakker, og deretter skal vi se på spesifikke argumenter og spesifikke eksempler søknadene deres.

Vanlige parametere

La oss se på parameterverdiene. Det er verdt å merke seg at:
  • Hvis et argument ikke er spesifisert når du kaller opp verktøyet, brukes standardverdien.
  • HVIS "TILLATTE VERDIOMRÅDE"-KOLONNNEN ER TOM, trenger ingen tilleggsverdier sendes - bare å bestå selve argumentet er nok.
  • Forhåndsvisningen vises bare på en fysisk skjerm koblet til Raspberry. Hvis du får tilgang til Raspberry via eksternt skrivebord (VNC), vil forhåndsvisningen ikke vises på noen innstillinger siden forhåndsvisningsbildet sendes direkte til skjermen på toppen av resten av informasjonen
  • Ligner på å se videoer via skrivebordet
Argument
Beskrivelse
Gyldig rekkevidde
Standardverdi
-s
Alternativer for forhåndsvisningsvindu
bredde, høyde, x-koordinat, y-koordinat
-f
Forhåndsvisning i full skjerm
Nei
-n
Ingen forhåndsvisning
-op
Forhåndsvis vindu åpenhet
0...255
255
-sh
Skarphet
-100...100
0
-co
Kontrast
-100...100
0
-br
Belysning
0...100
50
-sa
Metning
-100...100
0
-ISO
Kamerasensorfølsomhet
-100...100
0
- vs
Videostabilisering
(kun video)
Nei
-ev
Eksponeringskompensasjon
-10...10
0
-eks
Utstilling
  • natt
  • nightpreview
  • bakgrunnslys: bakgrunnsbelysning bak motivet
  • spotlight: spotlight belysning
  • sport: objekt i bevegelse
  • snø: snølandskap
  • strand: strandlandskap
  • veldig lang: lang eksponering
  • fixedfps: begrense FPS til en fast verdi
  • antishake: anti-shake
  • fyrverkeri: landskap med fyrverkeri
auto
-ååå
hvit balanse
  • sol: 5000K...6500K - sol
  • sky:6500K ... 12000K overskyet
  • skygge: i skyggen
  • wolfram: 2500K ... 3500K wolfram
  • fluorescerende: 2500K...4500K
  • glødelampe: rødglødende metall
  • blits: med blits
  • horisont
auto
-ifx
Ulike effekter
ingen, negativ, solariser, posterise, tavle, tavle, skisse, denoise, preging, oljemaling, luke, gpen, pastell, akvarell, film, uskarphet, metning, fargebytte, utvasket, fargepunkt, fargebalanse, tegneserie
ingen
-cfx
Fargebalanse
0...255:0...255
128:128
-mm
Eksponeringsmåling
  • gjennomsnitt: gjennomsnittlig
  • spot: punkt
  • bakgrunnsbelyst: les bakgrunnsbelyst bilde
  • matrise: matrisemåling
gjennomsnitt
-råtne
Sving
0 ... 359
0
-hf
Horisontal refleksjon
Nei
-vf
Vertikal refleksjon
Nei
-roi
Sensor ROI
koordinater fra øvre venstre hjørne og bredden og høyden på området
0 … 1,0 … 1,0 … 1,0 … 1
0,0,1,1
-ss
Lukkerhastighet
i mikrosekunder
6000000
-drc
Dynamisk rekkeviddekomprimering
av
-st
vise statistikk
Nei
Deretter vil vi vurdere verktøyene separat.


raspistill - fotofangst

Dette verktøyet produserer et kodet komprimert bilde, og for å utføre denne handlingen er det ganske mange parametere som sendes som argumenter når du kjører raspistill.

Argumenter

Argument
Beskrivelse
Gyldig rekkevidde
Standardverdi
-w
Bredde
0...maks
Maks
-h
Høyde
0...maks
Maks
-q
Kvalitet
0...100
75
-o
Filnavn
banen til filen
-
-v
Utgang til terminal
Informasjon om fangstprosessen
Nei
-t
Forsinkelse før handling
på millisekunder
0
-tl
Tidsforløp
eksempel: -tl 2000 -o image%04d.jpg
2000 - intervall
%04d - 4-sifret tallmønster
-
-e
Koding for å formatere
jpg, bmp, gif og png
jpg
-x
Legger til EXIF-tagger
opptil 32 tagger
-
-r
Lagre en Bayer-matrise i metadataene til et kodet bilde
-

Eksempler

La oss se på spesifikke eksempler på bruk av raspistill:
Ta et standardbilde etter 2 sekunder og lagre det i image.jpg-filen (i mappen du befinner deg i). Oppløsningen vil være standard (maksimal) raspistill -t 2000 -o image.jpg Det samme, men i en oppløsning på 640x480 raspistill -o image.jpg -w 640 -h 480 Ta et bilde med redusert kvalitet på 5% og lagre den til en fil image.jpg (i mappen du befinner deg i). Med denne kvaliteten vil bildestørrelsen bli betydelig mindre raspistill -o image.jpg -q 5 Hente et bilde kodet i PNG-format og lagre det til filen image.png raspistill -o image.png –e png Skaffe et standardbilde med to innebygde EXIF-tagger: Artist - Boris, GPS-høyde - 123,5 m raspistill -o image.jpg -x IFD0.Artist=Boris -x GPS.GPSAltitude=1235/10 Opprette et time-lapse sett med bilder som vil bli tatt med intervaller på 10 sekunder gjennom 10 minutter (600 000 ms) og kalles image_num_001_today.jpg, image_num_002_today.jpg og så videre. Det endelige bildet vil få navnet latest.jpg raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l latest.jpg Ta bilder når du trykker på Enter, filene lagres side ved side og får navnet my_pics01.jpg my_pics02. jpg osv. raspistill -t 0 -k -o my_pics%02d.jpg

raspiyuv

Lanseringsargumentene er nøyaktig de samme som for raspistill (se ovenfor), hvorav bare følgende IKKE er tilgjengelig:
-q - kvalitet
-e - spesifisere målbildeformatet
-x - Legg til EXIF-koder
-r - Lagre en Bayer-array i metadataene til det kodede bildet
Det er imidlertid et EGET argument
-rgb - lagring av "rå" rådata i RGB888-format (8 biter/kanal)

raspivid - videoopptak

Startparametere

Argument
Beskrivelse
Gyldig rekkevidde
Standardverdi
-w
Bredde
0...maks
1920
-h
Høyde
0...maks
1080
-b
Video bitrate
antall bits per sekund.
10Mbits/s er satt til -b 10000000
-o
Filnavn
banen til filen
-
-v
Utgang til terminal
Informasjon om fangstprosessen
-t
Forsinkelse før handling
på millisekunder
0
-fps
Framerate
Antall bilder per sekund 2...30
-k
Start/stopp opptaket ved å trykke Enter
prosessen avbrytes ved å trykke "X"
-sg
Lagre videosegmenter med en fast varighet i separate filer
Angi varigheten av ett segment og filmaske
-sg 3000 -o video%04d.h264
-wr
Begrensning av maksimalt antall filer under segmentering
Brukes med -sg-argumentet og implementerer i hovedsak syklisk omskriving som i DVR-er
Standard oppløsning er 1080p (1920x1080)
La oss se på spesifikke eksempler:
Ta opp en 5-sekunders standardvideo (1920x1080, 30 bilder/sek.) og lagre til en fil video.h264 raspivid -t 5000 -o video.h264 Ta opp en 5-sekunders video med en oppløsning på 1080p og en spesifikk bitrate på 3,5Mbits /s og lagre til fil video.h264 raspivid -t 5000 -o video.h264 -b 3500000 Ta opp 5 sekunder med standardoppløsningsvideo med 5fps bildefrekvens og lagre til filen video.h264 raspivid -t 5000 -o video.h264 -f 5 Hvis en skjerm er koblet til Raspberry via HDMI, kan den innspilte videoen sees ved hjelp av omxplayer-spilleren: sudo apt-get install omxplayer #hvis spilleren ikke er installert ennå omxplayer video.h264 Videovisning er ikke tilgjengelig via VNC

Feilkoder

  • 0 - vellykket gjennomføring
  • 64 - ugyldig kommando sendt (syntaksfeil)
  • 70 - feil i verktøyet eller ved kommunikasjon med kameraet
  • 130 - utførelse ble avbrutt av brukeren (tastkombinasjon Ctrl + C)

PiCamera bibliotek

Dette er et bibliotek for programmeringsspråket Python som lar deg forenkle og automatisere arbeidet med Raspberry-kameraet
Full beskrivelse av biblioteket på engelsk
I moderne versjoner av Raspbian-distribusjonen er biblioteket allerede forhåndsinstallert, du kan sjekke dette gjennom Python-konsollen python3 import picamera I tilfelle feil må du forlate konsollen ved å skrive inn exit()-kommandoen eller bruke Ctrl + D tastekombinasjon og installer biblioteket med kommandoen sudo apt-get install python3-picamera Arbeide med kameraet fra Python-kode som ligner på terminalkommandoene diskutert ovenfor. Du kan enkelt få et standardbilde fra et kamera direkte i Python-konsollen: importer picamera #importer kamerabiblioteket kamera = picamera.PiCamera() #opprett et kameraobjekt camera.capture("image.jpg") #ring kamerabildet fangstmetode kamera .close() #lukk kameraøkten Bildet vil bli lagret i image.jpg-filen i gjeldende mappe.

For to år siden, da jeg først begynte å jobbe med multikoptre, måtte jeg lage en liten. Siden quadcopteren var ment å være rent autonom, var alt som krevdes av denne fjernkontrollen å kontrollere dronen under testing og oppsett.

I prinsippet taklet fjernkontrollen alle oppgavene som ble tildelt den ganske vellykket . Men det var også alvorlige mangler.

  1. Batteriene passet ikke inn i etuiet, så jeg måtte teipe dem til etuiet med elektrisk tape :)
  2. Parametrene ble justert ved hjelp av fire potensiometre, som viste seg å være svært følsomme for temperatur. Du setter noen verdier innendørs, går ut - og de er allerede forskjellige, de har flytet bort.
  3. U Arduino Nano, som jeg brukte i fjernkontrollen, er det kun 8 analoge innganger. Fire ble okkupert av tuning potensiometre. Ett potensiometer fungerte som gass. To innganger var koblet til styrespaken. Bare én utgang forble ledig, og det var mange flere parametere å konfigurere.
  4. Den eneste joysticken var ikke en pilot i det hele tatt. Å kontrollere gassen med et potensiometer var også ganske frustrerende.
  5. Og fjernkontrollen ga ingen lyder, noe som noen ganger er ekstremt nyttig.

For å eliminere alle disse manglene bestemte jeg meg for å radikalt redesigne fjernkontrollen. Både maskinvaredelen og programvaren. Her er hva jeg ville gjøre:

  • Lag et stort etui slik at du kan stappe alt du vil nå (inkludert batterier) i den, og hva du vil senere.
  • Løs problemet med innstillingene på en eller annen måte, ikke ved å øke antall potensiometre. Legg i tillegg til muligheten til å lagre parametere i fjernkontrollen.
  • Lag to joysticker, som på vanlige pilotkonsoller. Vel, sette joystickene seg ortodokse.

Ny bygning

Ideen er ekstremt enkel og effektiv. Vi kutter ut to plater fra plexiglass eller annet tynt materiale og kobler dem til stativer. Hele innholdet i kofferten er festet til enten topp- eller bunnplaten.

Kontroller og menyer

For å kontrollere en haug med parametere, må du enten plassere en haug med potensiometre på fjernkontrollen og legge til en ADC, eller gjøre alle innstillingene gjennom menyen. Som jeg allerede sa, justering med potensiometre er ikke alltid en god idé, men du bør heller ikke gi opp. Så det ble besluttet å la fire potensiometre være i fjernkontrollen og legge til en full meny.

For å navigere gjennom menyen og endre parametere, brukes vanligvis knapper. Venstre, høyre, opp, ned. Men jeg ønsket å bruke en koder i stedet for knapper. Jeg fikk denne ideen fra en 3D-skriverkontroller.


Selvfølgelig, på grunn av tillegget av menyen, har fjernkontrollkoden utvidet flere ganger. Til å begynne med la jeg bare til tre menyelementer: "Telemetri", "Parametere" og "Store params". Det første vinduet viser opptil åtte forskjellige indikatorer. Så langt bruker jeg bare tre: batteristrøm, kompass og høyde.

I det andre vinduet er seks parametere tilgjengelige: PID-regulatorkoeffisienter for X/Y-, Z-aksene og akselerometerets korreksjonsvinkler.

Det tredje elementet lar deg lagre parametere i EEPROM.

Joysticks

Jeg tenkte ikke lenge på valget av pilot-joysticks. Det hendte at jeg fikk den første Turnigy 9XR-joysticken fra en kollega i quadcopter-bransjen - Alexander Vasiliev, eieren av det velkjente nettstedet alex-exe.ru. Jeg bestilte den andre direkte fra Hobbyking.


Den første joysticken var fjærbelastet i begge koordinatene - for å kontrollere giring og stigning. Den andre jeg tok var den samme, slik at jeg deretter kunne konvertere den til en joystick for å kontrollere trekkraft og rotasjon.

Ernæring

I den gamle fjernkontrollen brukte jeg en enkel LM7805 spenningsregulator, som ble matet med en haug med 8 AA-batterier. Et fryktelig ineffektivt alternativ, der 7 volt ble brukt på å varme regulatoren. 8 batterier - fordi det bare var et slikt rom for hånden, og LM7805 - fordi på den tiden virket dette alternativet for meg det enkleste, og viktigst av alt, det raskeste.

Nå bestemte jeg meg for å handle klokere og installerte en ganske effektiv regulator på LM2596S. Og i stedet for 8 AA-batterier, installerte jeg et rom for to LiIon 18650-batterier.


Resultat

Setter vi alt sammen, har vi denne enheten. Innvendig utsikt.


Men med lokket lukket.


Hetten på det ene potensiometeret og hettene på styrespakene mangler.

Til slutt en video om hvordan innstillinger konfigureres gjennom menyen.


Bunnlinjen

Fjernkontrollen er fysisk montert. Nå jobber jeg med å ferdigstille koden for fjernkontrollen og quadcopteret for å returnere dem til deres tidligere sterke vennskap.

Under oppsett av fjernkontrollen ble det identifisert mangler. For det første hviler de nedre hjørnene av fjernkontrollen i hendene dine: (Jeg skal nok redesigne platene litt, jevne ut hjørnene. For det andre er ikke engang en 16x4-skjerm nok for en vakker telemetriskjerm - jeg må forkorte parameternavn til to bokstaver I neste versjon av enheten vil jeg installere et punktdisplay eller umiddelbart en TFT-matrise.


Raspberry Pi enkeltbordsdatamaskinen lar deg lage virkelig interessante og nyttige ting: fra multimediesentre til hjemmeautomatiseringssystemer. Ved å koble ulike moduler til Raspberry Pi kan du utvide funksjonaliteten til denne minidatamaskinen betydelig.



En av disse ekstra plugin-modulene er et kamera som lar deg ta bilder eller filme. I dag finnes det en rekke kameraer for Raspberry Pi på markedet, og i denne artikkelen vil vi gi en kort gjennomgang av dem.


La oss se på seks av de mest populære kameraene: ZeroCam Noir, ZeroCam FishEye, Raspberry Pi-kompatibelt Fisheye-kamera, Raspberry Pi Camera V2, Raspberry Pi Camera V2 Noir og Raspberry Pi Camera 1.3.



ZeroCam Noir er en kameramodul for Raspberry Pi Zero eller Raspberry Pi Zero W, så hvis du vil bruke den i Raspberry Pi 3 eller 2, må du bruke en adapterkabel. Dette kameraet har ikke et IR-filter på objektivet, noe som gjør det ideelt for fotografering i lite lys. Her er noen av hovedkarakteristikkene: 5 megapikslers sensor, 2592 × 1944 piksler, 1080p ved 30 FPS (eller 60 FPS ved 720p, 90 FPS ved 480p), brennvidde 3,60 mm, 53,50 grader horisontalt, 41,41 grader vertikalt, ca. bordmål med kamera: 60 x 11,4 x 5,1 mm.



Dette er fiskeøye-versjonen av ZeroCam, som betyr at den har et vidvinkelbilde. Dette kameraet er også laget for Pi Zero eller Pi Zero W, så for å bruke det med et annet Pi-panel trenger du en adapterkabel.



Dette er et Raspberry Pi-kompatibelt fiskeøyekamera som enkelt kan finnes på ulike online handelsplattformer som AliExpress, TaoBao, eBay. Den er preget av en vidvinkelvisning på 175º. Den er basert på Omnivision 5647-sensoren med en oppløsning på 5 megapiksler (2592 x 1944 piksler).



Dette kameraet er utstyrt med en 8-megapiksel Sony IMX219-bildesensor med et fast fokusobjektiv, som kan vise statiske bilder på 3280×2464 piksler, det støtter 1080p30, 720p60 og 640×480p90 videoer. Kameraet er kompatibelt med alle Raspberry Pi-kort, men hvis du vil bruke det med Pi Zero, trenger du en adapterkabel.



Dette kameraet har alle funksjonene til Raspberry Pi Camera V2-modulen, men det har ikke et IR-filter. Dette betyr at det nesten er et ideelt kamera for fotografering i mørket.



Raspberry Pi Camera 1.3 er forgjengeren til V2-modulen. Den er utstyrt med en 5-megapiksel OmniVision OV5647-sensor.

Sammenligning av synsfelt og bildekvalitet på kameraer for Raspberry Pi

I denne testen er alle kameraer installert i en avstand på 1 meter fra testbildet. Resultatene er som følger:











Sammenligning av bildekvalitet og fargegjengivelse av Raspberry Pi-kameraer ved zooming











Sammenligning av opptakskvalitet om natten

Resultatene nedenfor viser flere nattfotograferingsklare kameraer som gjør det samme. testbilde i svært lite lys i mørket.







konklusjoner

Alle kameraer yter litt bedre enn forventet fra slike billige moduler. Dessverre er det ikke noe alt-i-ett-kamera blant dem, og det er en avveining å gjøre siden det ikke ser ut til å være noen vidvinkelkameraer (fiskeøye) med IR-filteret fjernet. Så hvis du vil ha vidvinkel, trenger du vanlig belysning, og omvendt er det usannsynlig at du kan ta vidvinkelfotografering om natten.

God dag!

På nyttårsaften fikk jeg ideen om å bygge en slags videoovervåking. Jeg hadde alt jeg trengte for hånden:

  • Raspberry Pi Model B enkeltbord datamaskin
  • Webkamera LOGITECH HD Webkamera C270
Etter å ha lest bestemte jeg meg for å utvikle forfatterens idé litt.
Bekjent
Så la oss først bli kjent med hovedkomponenten:
Raspberry Pi utseende:

Kjennetegn:

  • Broadcom BCM2835 700MHz ARM1176JZFS-prosessor med FPU og Videocore 4 GPU
  • GPU gir Open GL ES 2.0, maskinvareakselerert OpenVG og 1080p30 H.264 høyprofildekoding
  • GPU er i stand til 1Gpixel/s, 1,5Gtexel/s eller 24GFLOPS med teksturfiltrering og DMA-infrastruktur
  • 512 MB RAM
  • Starter opp fra SD-kort, kjører en versjon av Linux-operativsystemet
  • 10/100 BaseT Ethernet-kontakt
  • HDMI video ut-kontakt
  • 2 x USB 2.0-kontakter
  • RCA kompositt video ut-kontakt
  • SD-kortkontakt
  • Drives fra microUSB-kontakt
  • 3,5 mm lydutgang
  • Raspberry Pi HD videokamerakontakt
  • Størrelse: 85,6 x 53,98 x 17 mm
pi@hall-pi ~ $ cat /proc/cpuinfo prosessor: 0 modellnavn: ARMv6-kompatibel prosessor rev 7 (v6l) BogoMIPS: 2.00 Funksjoner: swp half thumb fastmult vfp edsp java tls CPU implementer: 0x41 CPU-arkitektur: 7 CPU-variant : 0x0 CPU-del: 0xb76 CPU-revisjon: 7 Maskinvare: BCM2708 Revisjon: 000e Serie: 000000005a82c372

Du finner en liste over offisielt støttede distribusjoner. Jeg valgte Raspbian uten et grafisk skall.

Installasjonsprosessen er ganske enkel og krever ikke Detaljert beskrivelse, så jeg vil liste opp hovedfakta som er verdt å ta hensyn til:

  1. Stille inn tidssonen
  2. Stille inn datamaskinnavnet
  3. Aktiverer SSH-tilgang
  4. System oppdatering
Etter å ha fullført alle nødvendige innstillinger, kan du begynne.
Forberedelse
Først, la oss installere alle nødvendige pakker:
sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion
Last ned og sett sammen mjpg-streamer:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
Fordi Vi vil lagre all data i skyen, vi vil sette opp arbeid med fjernkontroll filsystem via WebDAV:
sudo apt-get install davfs2 sudo mkdir /mnt/dav sudo mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
For ikke å skrive inn brukernavn og passord hver gang, må du legge dem til i filen
/etc/davfs2/secrets
/mnt/dav brukerpassord
Arbeidsprosessen
La oss legge til kommandoer til /etc/rc.local for å montere WebDAV og kjøre skriptet for kringkasting til nettverket:
mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi cd /home/pi/mjpg-streamer && ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.så -w ./www"
Nå, ved å gå til http://:8080/ får vi tilgang til kameraet. Det gjenstår bare å videresende porten på ruteren og du får tilgang til kameraet utenfor det lokale nettverket.
Lage timelapse-video
Først av alt må vi få et bilde fra kameraet. Fordi det er allerede opptatt (bildet kringkastes av webserveren), så vil vi bruke muligheten til å motta det gjeldende bildet fra webserveren:
curl http://localhost:8080/?action=snapshot > out.jpg
Hvis vi vil tegne datoen for bildet på bildet, kan vi bruke kommandoen convert
timestamp=`stat -c %y out.jpg` convert out.jpg -fill black -fill white -pointsize 15 -draw "text 5.15 "$(timestamp:0:19)"" out_.jpg
Full versjon manus:
#!/bin/bash filnavn=$(perl -e "utskriftstid") mappenavn=$(dato --rfc-3339=dato) curl http://localhost:8080/?action=snapshot > $filnavn timestamp=` stat -c %y $filnavn` mkdir /mnt/dav/out/$mappenavn konvertere $filnavn -fyll svart -fyll hvit -punktstørrelse 15 -draw "text 5.15 "$(timestamp:0:19)"" /mnt /dav /out/$mappenavn/$filnavn.jpg rm $filnavn
Videoen er satt sammen ved hjelp av avconv-kommandoen:
avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
Fullversjon av videomonteringsskriptet:
#!/bin/bash filnavn=$(dato --rfc-3339=dato) i=0 for f i `ls -tr /mnt/dav/out/$filnavn/*.jpg 2>/dev/null` do newf=`printf %06d $i`.jpg ekko $f "-->" $newf mv $f $newf i=$((i+1)) ferdig rmdir -R /mnt/dav/out/$filnavn/ avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$filnavn.avi rm *.jpg
Nå gjenstår det bare å registrere utførelsen av skript i Cron-planleggeren:
* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
Eksempel video
Konklusjon
Denne tilnærmingen bidrar til å eliminere behovet for å bruke mye tid på å se videoer, og reduserer også kostnadene for sluttproduktet. Takket være tilstedeværelsen av et fullverdig OS, blir det mulig å utvide funksjonaliteten i riktig retning.

Fordi Denne datamaskinen har tilstrekkelig ytelse til å motta, lagre, behandle og overføre video fra et kamera (for eksempel fra et USB-kamera) via wifi til andre enheter. Det er spesialkameraer for Raspberry PI som kobles til en spesiell kontakt på den og USB-kameraer som kobles til evt. USB-port på Raspberry PI. Fordi USB-kameraer er som regel mye billigere enn spesielle (om enn verre), så neste gang vil vi vurdere å bruke et USB-kamera med Raspberry PI. Det finnes en rekke programmer for å ta opp video fra et USB-kamera, eller du kan skrive ditt eget, men for enkelhets skyld, la oss først se på å ta opp og overføre video ved hjelp av bevegelsesprogrammet. For å installere bevegelsesprogrammet på Raspberry PI, må du først koble til det gjennom Putty-programmet (eller et hvilket som helst annet terminalprogram med evne til å kommunisere via SSH) (for informasjon om hvordan du gjør dette, se forrige artikkel "Raspberry PI 3 sette opp og administrere GPIO via WIFI"). Etter å ha koblet til Raspberry PI, må du oppdatere systemet ved hjelp av kommandoene

Sudo apt-get oppdatering

Sudo apt-get oppgradering

Etter en vellykket systemoppdatering må du installere bevegelsesprogrammet med kommandoen

Sudo apt-get install motion

Under installasjonen kan du bli spurt spørsmålet "Vil du fortsette?" deretter må du skrive inn bokstaven "Y". Etter å ha installert bevegelsesprogrammet, må du gjøre noen endringer i konfigurasjonsfilene. Åpne motion.conf-filen i nano-editoren med kommandoen

Sudo nano /etc/motion/motion.conf

Deretter

Erstattet av

Deretter finner vi andre linjer å endre, for å gjøre dette, trykk på tastekombinasjonen CTRL+W, skriv inn "stream_localhost" og trykk enter, etter det skal den nødvendige linjen bli funnet, hvis den ikke blir funnet, deretter variabelen "stream_localhost" ” kalles noe annet, for eksempel “webcam_localhost” eller noe sånt. Etter at linjen med denne variabelen er funnet, må du

Stream_localhost på

erstattet av

Stream_maxrate 1

Og erstatte med

Stream_maxrate 100

Erstattet av

Deretter

Minimum_frame_time 0

Erstattet av

Minimum_frame_time 1

Sistnevnte er gjort slik at rammer sendes ut en gang i sekundet - dette ser ikke veldig bra ut, men videoen vil ikke forsvinne hvis bildet endres plutselig. Hensikten med hver variabel kan leses i kommentarfeltet.
Lagre nå endringene ved å trykke CTRL+O og enter, trykk deretter CTRL+X og avslutt nano redaktør. La oss nå redigere en annen fil, for å gjøre dette skriver vi inn kommandoen

Sudo nano /etc/default/motion

Og bytt ut linjen

Start_motion_daemon=nei

Start_motion_daemon=ja

Lagre deretter endringene ved å trykke CTRL+O og enter og trykk deretter CTRL+X og gå ut av nano-editoren. Nå kan du starte videooverføring (USB-kameraet må være koblet til en av portene) med kommandoen

Sudo service motion start

Stopp med kommando

Sudo service bevegelse stopp

For å se videoen må du åpne nettleseren og skrive inn IP-adressen til Raspberry PI i adressefeltet, deretter sette et kolon og 8081 (IP-adressen til Raspberry PI: 8081) og trykke enter, hvoretter videoen fra USB-kameraet skal vises i nettleseren. Du kan se hvordan alt gjøres, se resultatet og noe annet i videoen:

Som dette på en enkel måte Du kan få video fra et USB-kamera koblet til Raspberry PI. Hvis det er en Raspberry PI 3 med innebygd wifi og drevet av en powerbank (eller en annen bærbar strømkilde) (for eksempel denne eller en billigere, selv om det ikke anbefales å bruke en billig, Raspberry PI trenger en normal strømkilde for å bruke alle sine evner, det er også veldig tilrådelig å installere en kjøleribbe for prosessoren og andre mikrokretser som utvikler seg under bringebærdrift, ideelt sett bør kjøleribben være kobber og belagt med spesiell svart maling), deretter basert på alle dette kan du lage et slags videoovervåkingssystem, videokamera eller noe lignende.




Topp