Conectarea unei camere analogice la un raspberry pi. Server de supraveghere video folosind Raspberry Pi. Crearea unui videoclip timelapse

Să ne uităm la metode pentru conectarea corectă a camerei la Raspberry Pi și lucrul cu aceasta prin fereastra terminalului și folosind limbajul de programare Python.
Materiale conexe:
Când conectați camera la Raspberry, rețineți următoarele:
  • Camera se teme de electricitatea statică; este recomandabil să o atingeți în timpul funcționării prin material antistatic
  • camera consumă 250 mA - atunci când utilizați o sursă de alimentare Malina mediocră, conectarea camerei poate cauza o lipsă de energie atunci când camera funcționează activ
  • nu există microfon în cameră
  • partea superioară a camerei este situată pe partea opusă ieșirii cablului, dar există o comandă specială pentru a reflecta imaginea pe verticală - mai multe despre aceea de mai jos.

Conexiune

Este recomandabil să conectați camera la un Raspberry oprit. Puteți opri rapid Raspberry cu comanda
sudo oprire acum
Conectorul CSI Daisy Chain este situat lângă HDMI: Avantajul conectării camerei prin acest conector, spre deosebire de USB, este că ușurează procesorul atunci când transferă date prin interfața CSI
Pentru ușurința fixării camerei există soluții gata făcute, de exemplu - Suport acrilic.
Interfața camerei trebuie să fie activată în setările Raspberry:
După activarea camerei (dacă este necesar), Malina trebuie repornită: sudo reboot now
Pentru a lucra cu camera, Raspbian are deja preinstalate utilitățile și driverele necesare. Să actualizăm pachetele pentru a folosi cele mai recente versiuni: sudo apt-get update -y sudo apt-get dist-upgrade -y Dacă totul este făcut corect, să încercăm să obținem un cadru de test de la cameră - creați un folder pentru fotografii, mergeți la el și executați comanda de captare a imaginii: mkdir ~/pi_cam/ cd ~/pi_cam/ raspistill -v -o test.jpg
În caz de defecțiune, ar trebui să verificați pașii anteriori sau să sunați contactele conectorului de pe cameră și de pe Malina.
Următoarele pachete pentru lucrul cu camera sunt preinstalate în sistemul de operare Raspbian:
  • raspivid, raspvidyuv - captură video
  • raspistill, raspiyuv - fotografiere
Un ghid complet al utilităților enumerate este disponibil la Limba engleză este pornit oprit. Site-ul web Raspberry Pi
Toate utilitatile sunt lansate din terminal si sunt destul de usor de folosit.
Pachetele cu nume care se termină în „yuv” nu folosesc componenta de codificare - ele stochează informațiile „brute” neprocesate primite de senzorul camerei. Să ne uităm la lucrul cu fiecare pachet, dar mai întâi ne vom familiariza cu lista parametrilor camerei comuni tuturor pachetelor, apoi ne vom uita la argumente specifice și exemple concrete aplicatiile lor.

Parametri comuni

Să ne uităm la valorile parametrilor. Este demn de remarcat faptul că:
  • Dacă nu este specificat un argument la apelarea utilitarului, este utilizată valoarea implicită a acestuia.
  • DACĂ COLONA „GAMA DE VALORI PERMISE” ESTE GOLĂ, atunci nu trebuie să se transmită valori suplimentare - este suficientă trecerea argumentului în sine.
  • Previzualizarea este afișată numai pe un monitor fizic conectat la Raspberry. Dacă accesați Raspberry prin intermediul desktopului de la distanță (VNC), previzualizarea nu va fi afișată la nicio setare, deoarece imaginea de previzualizare este trimisă direct pe monitor peste restul informațiilor.
  • Similar cu vizionarea videoclipurilor de pe desktop
Argument
Descriere
Interval valid
Valoare implicită
-p
Opțiuni pentru fereastra de previzualizare
latime, inaltime, coordonata x, coordonata y
-f
Previzualizare pe tot ecranul
Nu
-n
Fara previzualizare
-op
Transparența ferestrei de previzualizare
0...255
255
-SH
Claritate
-100...100
0
-co
Contrast
-100...100
0
-br
Iluminare
0...100
50
-sa
Saturare
-100...100
0
-ISO
Sensibilitatea senzorului camerei
-100...100
0
-vs
Stabilizare video
(doar video)
Nu
-ev
Compensarea expunerii
-10...10
0
-ex
Expunere
  • noapte
  • previzualizare nocturnă
  • backlight: iluminare de fundal în spatele subiectului
  • spotlight: spotlight lighting
  • sport: obiect în mișcare
  • zăpadă: peisaj înzăpezit
  • plajă: peisaj de plajă
  • foarte lung: expunere lungă
  • fixedfps: limitează FPS la o valoare fixă
  • antishake: anti-shake
  • artificii: peisaj cu artificii
auto
-awb
echilibru alb
  • soare: 5000K...6500K - însorit
  • nor: 6500K ... 12000K noros
  • umbra: la umbra
  • wolfram: 2500K ... 3500K wolfram
  • fluorescent: 2500K...4500K
  • incandescentă: metal încins la roșu
  • blitz: cu blitz
  • orizont
auto
-ifx
Efecte diverse
niciunul, negativ, solarise, posterise, tablă albă, tablă, schiță, dezgomot, relief, vopsea în ulei, trapă, gpen, pastel, acuarelă, film, estompare, saturație, schimb de culori, spălat, punct de culoare, echilibru de culori, desen animat
nici unul
-cfx
Echilibru de culoare
0...255:0...255
128:128
-mm
Măsurarea expunerii
  • medie: medie
  • spot: punct
  • backlit: citiți imaginea retroiluminată
  • matrice: contorizare matrice
in medie
-putrezi
Întoarce-te
0 ... 359
0
-hf
Reflexia orizontala
Nu
-vf
Reflexie verticală
Nu
-roi
ROI senzorului
coordonatele din colțul din stânga sus și lățimea și înălțimea zonei
0 … 1,0 … 1,0 … 1,0 … 1
0,0,1,1
-ss
Viteza obturatorului
în microsecunde
6000000
-drc
Compresie în intervalul dinamic
oprit
-Sf
arata statistici
Nu
În continuare, vom lua în considerare utilitățile separat.


raspistill - captura foto

Acest utilitar produce o imagine comprimată codificată, iar pentru a efectua această acțiune sunt câțiva parametri trecuți ca argumente atunci când rulați raspistill.

Argumente

Argument
Descriere
Interval valid
Valoare implicită
-w
Lăţime
0...max
Max
-h
Înălţime
0...max
Max
-q
Calitate
0...100
75
-o
Nume de fișier
calea către fișier
-
-v
Ieșire către terminal
Informații despre procesul de captare
Nu
-t
Întârziere înainte de acțiune
în milisecunde
0
-tl
Interval de timp
exemplu: -tl 2000 -o imagine%04d.jpg
2000 - interval
%04d - model de numere din 4 cifre
-
-e
Codificare pentru a formata
jpg, bmp, gif și png
jpg
-X
Adăugarea etichetelor EXIF
până la 32 de etichete
-
-r
Stocarea unei matrice Bayer în metadatele unei imagini codificate
-

Exemple

Să ne uităm la exemple specifice de utilizare a raspistill:
Capturați o imagine standard după 2 secunde și salvați-o în fișierul image.jpg (în folderul în care vă aflați în prezent). Rezoluția va fi standard (maximum) raspistill -t 2000 -o image.jpg Același lucru, dar la o rezoluție de 640x480 raspistill -o image.jpg -w 640 -h 480 Capturați o imagine cu o calitate redusă de 5% și salvați-l într-un fișier imagine.jpg (în folderul în care vă aflați în prezent). Cu această calitate, dimensiunea imaginii va fi semnificativ mai mică raspistill -o image.jpg -q 5 Obținerea unei imagini codificate în format PNG și salvarea ei în fișierul image.png raspistill -o image.png –e png Obținerea unei imagini standard cu două etichete EXIF ​​încorporate: Artist - Boris, altitudine GPS - 123,5 m raspistill -o image.jpg -x IFD0.Artist=Boris -x GPS.GPSAltitude=1235/10 Crearea unui set de imagini time-lapse care vor fi capturate la intervale de 10 secunde pe parcursul a 10 minute (600.000 ms) și să fie numite image_num_001_today.jpg, image_num_002_today.jpg și așa mai departe. Imaginea finală va fi numită latest.jpg raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l latest.jpg Capturați imagini când apăsați Enter, fișierele vor fi salvate unul lângă altul și denumit my_pics01.jpg my_pics02. jpg etc. raspistill -t 0 -k -o my_pics%02d.jpg

raspiyuv

Argumentele de lansare sunt exact aceleași cu cele ale raspistill (vezi mai sus), dintre care doar următoarele NU SUNT DISPONIBILE:
-q - calitate
-e - specificarea formatului de imagine țintă
-x - Adăugați etichete EXIF
-r - Stochează o matrice Bayer în metadatele imaginii codificate
Cu toate acestea, există un PROPRI argument
-rgb - salvarea datelor brute „brute” în format RGB888 (8 biți/canal)

raspivid - captură video

Parametri de lansare

Argument
Descriere
Interval valid
Valoare implicită
-w
Lăţime
0...max
1920
-h
Înălţime
0...max
1080
-b
Rata de transfer video
numărul de biți pe secundă.
10Mbits/s este setat -b 10000000
-o
Nume de fișier
calea către fișier
-
-v
Ieșire către terminal
Informații despre procesul de captare
-t
Întârziere înainte de acțiune
în milisecunde
0
-fps
Framerate
Număr de cadre pe secundă 2...30
-k
Porniți/opriți înregistrarea apăsând Enter
procesul este întrerupt prin apăsarea „X”
-sg
Salvarea segmentelor video cu o durată fixă ​​în fișiere separate
Setați durata unui segment și a măștii fișierului
-sg 3000 -o video%04d.h264
-wr
Limitarea numărului maxim de fișiere în timpul segmentării
Folosit cu argumentul -sg și în esență implementează rescrierea ciclică ca în DVR-uri
Rezoluția implicită este 1080p (1920x1080)
Să ne uităm la exemple specifice:
Înregistrarea unui videoclip standard de 5 secunde (1920x1080, 30 cadre/sec) și salvarea într-un fișier video.h264 raspivid -t 5000 -o video.h264 Înregistrarea unui videoclip de 5 secunde cu o rezoluție de 1080p și un bitrate specific de 3,5 Mbiți /s și salvare în fișierul video.h264 raspivid -t 5000 -o video.h264 -b 3500000 Înregistrați 5 secunde de video cu definiție standard la o rată de cadre de 5fps și salvați în fișierul video.h264 raspivid -t 5000 -o video.h264 -f 5 Dacă un monitor este conectat la Raspberry prin HDMI, videoclipul înregistrat poate fi vizionat utilizând playerul omxplayer: sudo apt-get install omxplayer #dacă playerul nu este încă instalat omxplayer video.h264 Vizualizarea video nu este disponibilă prin VNC

Coduri de eroare

  • 0 - finalizare cu succes
  • 64 - a fost trimisă o comandă nevalidă (eroare de sintaxă)
  • 70 - eroare la utilitar sau la comunicarea cu camera
  • 130 - execuția a fost întreruptă de utilizator (combinație de taste Ctrl + C)

Biblioteca PiCamera

Aceasta este o bibliotecă pentru limbajul de programare Python care vă permite să simplificați și să automatizați lucrul cu camera Raspberry
Descrierea completă a bibliotecii în limba engleză
În versiunile moderne ale distribuției Raspbian, biblioteca este deja preinstalată, puteți verifica acest lucru prin consola Python python3 import picamera În caz de defecțiune, trebuie să părăsiți consola introducând comanda exit() sau apăsând Ctrl + D și instalați biblioteca cu comanda sudo apt-get install python3-picamera Lucrul cu camera din codul Python similar cu comenzile terminalului discutate mai sus. Puteți obține cu ușurință o imagine standard de la o cameră direct în consola Python: import picamera #import the camera library camera = picamera.PiCamera() #create a camera object camera.capture("image.jpg") #call the camera image metoda de captura camera .close() #close the camera session Imaginea va fi salvata in fisierul image.jpg din folderul curent.

Acum doi ani, când am început să lucrez la multicoptere, a trebuit să fac unul mic. Întrucât quadcopterul era destinat să fie pur autonom, tot ceea ce era necesar de la această telecomandă era să controleze drona în timpul testării și instalării.

În principiu, telecomanda a făcut față cu succes tuturor sarcinilor care i-au fost atribuite . Dar au existat și deficiențe serioase.

  1. Bateriile nu intrau în carcasă, așa că a trebuit să le lipesc pe carcasă cu bandă electrică :)
  2. Parametrii au fost ajustați folosind patru potențiometre, care s-au dovedit a fi foarte sensibile la temperatură. Setezi niște valori în interior, ieși afară - și sunt deja diferite, au plutit.
  3. U Arduino Nano, pe care l-am folosit la telecomandă, sunt doar 8 intrări analogice. Patru au fost ocupate de potențiometre de reglare. Un potențiometru a servit drept gaz. Două intrări au fost conectate la joystick. O singură ieșire a rămas liberă și mai erau mulți parametri de configurat.
  4. Singurul joystick nu era deloc unul pilot. Controlul clapetei de accelerație cu un potențiometru a fost, de asemenea, destul de frustrant.
  5. Și telecomanda nu a scos niciun sunet, ceea ce uneori este extrem de util.

Pentru a elimina toate aceste neajunsuri, am decis să reproiectez radical telecomanda. Atât partea hardware cât și software-ul. Iată ce am vrut să fac:

  • Faceți o carcasă mare, astfel încât să puteți introduce tot ce doriți acum (inclusiv bateriile) în ea și orice doriți mai târziu.
  • Rezolvați cumva problema cu setările, nu prin creșterea numărului de potențiometre. În plus, adăugați posibilitatea de a salva parametrii în telecomandă.
  • Faceți două joystick-uri, ca pe consolele pilot normale. Ei bine, pune joystick-urile ortodoxe.

Cladire nouă

Ideea este extrem de simplă și de eficientă. Tăiem două plăci din plexiglas sau alt material subțire și le conectăm cu suporturi. Întregul conținut al carcasei este atașat fie de placa superioară, fie de jos.

Comenzi și meniuri

Pentru a controla o mulțime de parametri, fie trebuie să plasați o grămadă de potențiometre pe telecomandă și să adăugați un ADC, fie să faceți toate setările prin meniu. După cum am spus deja, reglarea cu potențiometre nu este întotdeauna o idee bună, dar nici nu ar trebui să renunți la ea. Așadar, s-a decis să se lase patru potențiometre în telecomandă și să se adauge un meniu complet.

Pentru a naviga prin meniu și a modifica parametrii, se folosesc de obicei butoanele. Stânga, dreapta, sus, jos. Dar am vrut să folosesc un encoder în loc de butoane. Am primit această idee de la un controler de imprimantă 3D.


Desigur, datorită adăugării meniului, codul telecomenzii s-a extins de mai multe ori. Pentru început, am adăugat doar trei elemente de meniu: „Telemetrie”, „Parametri” și „Store parametri”. Prima fereastră afișează până la opt indicatori diferiți. Până acum folosesc doar trei: puterea bateriei, busola și altitudinea.

În a doua fereastră, sunt disponibili șase parametri: coeficienții controlerului PID pentru axele X/Y, Z și unghiurile de corecție ale accelerometrului.

Al treilea element vă permite să salvați parametrii în EEPROM.

Joystick-uri

Nu m-am gândit mult la alegerea joystick-urilor pilot. S-a întâmplat că am primit primul joystick Turnigy 9XR de la un coleg din afacerea cu quadcopter - Alexander Vasiliev, proprietarul cunoscutului site alex-exe.ru. Pe al doilea l-am comandat direct de la Hobbyking.


Primul joystick a fost încărcat cu arc în ambele coordonate - pentru a controla rotirea și înclinarea. Al doilea pe care l-am luat a fost același, astfel încât să îl pot transforma apoi într-un joystick pentru a controla tracțiunea și rotația.

Nutriție

În vechea telecomandă am folosit un regulator de tensiune simplu LM7805, care era alimentat cu o grămadă de 8 baterii AA. O variantă teribil de ineficientă, în care s-au cheltuit 7 volți pentru încălzirea regulatorului. 8 baterii - pentru ca exista doar un astfel de compartiment la indemana, si LM7805 - pentru ca la acea vreme aceasta optiune mi se parea cea mai simpla, si cel mai important, cea mai rapida.

Acum am decis să acționez mai înțelept și am instalat un regulator destul de eficient pe LM2596S. Și în loc de 8 baterii AA, am instalat un compartiment pentru două baterii LiIon 18650.


Rezultat

Punând totul împreună, am primit acest dispozitiv. Vedere din interior.


Dar cu capacul închis.


Capacul unui potențiometru și capacele joystick-urilor lipsesc.

În sfârșit, un videoclip despre cum sunt configurate setările prin meniu.


Concluzie

Telecomanda este asamblată fizic. Acum lucrez la finalizarea codului pentru telecomandă și quadcopter pentru a le readuce la fosta lor prietenie puternică.

La configurarea telecomenzii au fost identificate deficiențe. În primul rând, colțurile inferioare ale telecomenzii stau în mâinile tale: (probabil voi reproiecta puțin plăcile, voi netezi colțurile. În al doilea rând, nici un afișaj 16x4 nu este suficient pentru un afișaj de telemetrie frumos - trebuie să scurtez numele parametrilor la două litere. În următoarea versiune a dispozitivului voi instala un afișaj cu puncte sau imediat o matrice TFT.


Calculatorul Raspberry Pi singleboard vă permite să creați lucruri cu adevărat interesante și utile: de la centre multimedia la sisteme de automatizare a locuinței. Prin conectarea diferitelor module la Raspberry Pi, puteți extinde semnificativ funcționalitatea acestui minicomputer.



Unul dintre aceste plug-in-uri suplimentare este o cameră, care vă permite să faceți fotografii sau să înregistrați videoclipuri. Astăzi există pe piață o serie de camere pentru Raspberry Pi, iar în acest articol vom face o scurtă trecere în revistă a acestora.


Să ne uităm la șase dintre cele mai populare camere: ZeroCam Noir, ZeroCam FishEye, Camera Fisheye compatibilă Raspberry Pi, Camera Raspberry Pi V2, Camera Raspberry Pi V2 Noir și Camera Raspberry Pi 1.3.



ZeroCam Noir este un modul de cameră pentru Raspberry Pi Zero sau Raspberry Pi Zero W, așa că dacă doriți să îl utilizați în Raspberry Pi 3 sau 2, va trebui să utilizați un cablu adaptor. Această cameră nu are un filtru IR pe obiectiv, ceea ce o face ideală pentru fotografii cu lumină scăzută. Iată câteva dintre principalele sale caracteristici: senzor de 5 megapixeli, 2592 × 1944 pixeli, 1080p la 30 FPS (sau 60 FPS la 720p, 90 FPS la 480p), distanță focală 3,60 mm, 53,50 grade orizontală, aproximativ 41,41 grade verticală. dimensiuni placa cu camera: 60 x 11,4 x 5,1 mm.



Aceasta este versiunea fisheye a ZeroCam, ceea ce înseamnă că are o imagine cu unghi larg. Această cameră este făcută și pentru Pi Zero sau Pi Zero W, așa că pentru a o folosi cu un alt panou Pi ai nevoie de un cablu adaptor.



Aceasta este o cameră de pește compatibilă cu Raspberry Pi, care poate fi găsită cu ușurință pe diverse platforme de tranzacționare online, cum ar fi AliExpress, TaoBao, eBay. Se caracterizează printr-un unghi larg de vedere de 175º. Se bazează pe senzorul Omnivision 5647 cu o rezoluție de 5 megapixeli (2592 x 1944 pixeli).



Această cameră este echipată cu un senzor de imagine Sony IMX219 de 8 megapixeli cu o lentilă focală fixă, capabil să afișeze imagini statice de 3280×2464 pixeli, acceptă videoclipuri 1080p30, 720p60 și 640×480p90. Camera este compatibilă cu toate plăcile Raspberry Pi, dar dacă doriți să o utilizați cu Pi Zero, aveți nevoie de un cablu adaptor.



Această cameră are toate caracteristicile modulului Raspberry Pi Camera V2, dar nu are filtru IR. Aceasta înseamnă că este aproape o cameră ideală pentru fotografierea în întuneric.



Raspberry Pi Camera 1.3 este predecesorul modulului V2. Este echipat cu un senzor OmniVision OV5647 de 5 megapixeli.

Comparație între câmpul vizual și calitatea imaginii camerelor pentru Raspberry Pi

În acest test, toate camerele sunt instalate la o distanță de 1 metru de imaginea de test. Rezultatele sunt următoarele:











Comparație între calitatea imaginii și redarea culorilor camerelor Raspberry Pi la zoom











Comparație între calitatea fotografierii pe timp de noapte

Rezultatele de mai jos arată mai multe camere gata de fotografiere de noapte care fac același lucru. imagine de testare la lumină foarte slabă în întuneric.







concluzii

Toate camerele funcționează puțin mai bine decât se aștepta de la astfel de module ieftine. Din păcate, nu există o cameră all-in-one printre ele și trebuie făcut un compromis, deoarece nu pare să existe camere cu unghi larg (ochi de pește) cu filtrul de tăiere IR eliminat. Deci, dacă doriți un unghi larg, veți avea nevoie de iluminare regulată și, invers, este puțin probabil să puteți fotografia un unghi larg noaptea.

O zi buna!

De Revelion, mi-a venit ideea să construiesc un fel de supraveghere video. Aveam tot ce aveam nevoie la îndemână:

  • Computer Raspberry Pi Model B cu o singură placă
  • Cameră web LOGITECH HD Webcam C270
După ce am citit, am decis să dezvolt puțin ideea autorului.
Cunoștință
Deci, mai întâi, să ne familiarizăm cu „componenta” principală:
Aspectul Raspberry Pi:

Caracteristici:

  • Procesor Broadcom BCM2835 700MHz ARM1176JZFS cu FPU și GPU Videocore 4
  • GPU oferă Open GL ES 2.0, OpenVG accelerat hardware și decodare 1080p30 H.264 de profil înalt
  • GPU este capabil de 1 Gpixel/s, 1,5 Gtexel/s sau 24 GFLOPS cu filtrare de textură și infrastructură DMA
  • 512 MB RAM
  • Pornește de pe cardul SD, rulând o versiune a sistemului de operare Linux
  • Priză Ethernet 10/100 BaseT
  • Mufa de ieșire video HDMI
  • 2 x mufe USB 2.0
  • Mufa de ieșire video compozit RCA
  • Soclu pentru card SD
  • Alimentat de la mufa microUSB
  • Mufă de ieșire audio de 3,5 mm
  • Conector pentru camera video Raspberry Pi HD
  • Dimensiune: 85,6 x 53,98 x 17 mm
pi@hall-pi ~ $ cat /proc/cpuinfo procesor: 0 nume model: procesor compatibil ARMv6 rev 7 (v6l) BogoMIPS: 2.00 Caracteristici: swp half thumb fastmult vfp edsp java tls CPU implementer: 0x41 arhitectura CPU: 7 varianta CPU : 0x0 Partea CPU: 0xb76 Revizia procesorului: 7 Hardware: BCM2708 Revizie: 000e Serial: 000000005a82c372

O listă a distribuțiilor acceptate oficial poate fi găsită. Am optat pentru Raspbian fără shell grafic.

Procesul de instalare este destul de simplu și nu necesită descriere detaliata, așa că voi enumera principalele fapte cărora merită să le acordăm atenție:

  1. Setarea fusului orar
  2. Setarea numelui computerului
  3. Activarea accesului SSH
  4. Actualizare de sistem
După finalizarea tuturor setărilor necesare, puteți începe.
Pregătirea
Mai întâi, să instalăm toate pachetele necesare:
sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion
Apoi descărcați și asamblați mjpg-streamer:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
Deoarece Vom stoca toate datele în cloud, vom configura lucrul cu telecomandă Sistemul de fișiere prin 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
Pentru a nu vă introduce numele de utilizator și parola de fiecare dată, trebuie să le adăugați în fișier
/etc/davfs2/secrets
parola de utilizator /mnt/dav
Procesul de lucru
Să adăugăm comenzi la /etc/rc.local pentru a monta WebDAV și a rula scriptul pentru difuzarea în rețea:
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.so -w ./www”
Acum, accesând http://:8080/ vom avea acces la cameră. Tot ce rămâne este să redirecționați portul de pe router și puteți accesa camera în afara rețelei locale.
Crearea unui videoclip timelapse
În primul rând, trebuie să obținem o imagine de la cameră. Deoarece este deja ocupată (imaginea este difuzată de serverul web), atunci vom folosi oportunitatea de a primi imaginea curentă de la serverul web:
curl http://localhost:8080/?action=snapshot > out.jpg
Dacă vrem să desenăm data fotografiei pe imagine, atunci putem folosi comanda 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
Versiunea completa scenariu:
#!/bin/bash nume fișier=$(perl -e „timpul tipăririi”) nume dosar=$(date --rfc-3339=date) curl http://localhost:8080/?action=snapshot > $filename timestamp=` stat -c %y $filename` mkdir /mnt/dav/out/$foldername convert $filename -fill black -fill white -pointsize 15 -draw "text 5.15 "$(timestamp:0:19)"" /mnt /dav /out/$filename/$filename.jpg rm $filename
Videoclipul este asamblat folosind comanda avconv:
avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
Versiunea completă a scriptului de asamblare video:
#!/bin/bash filename=$(date --rfc-3339=date) i=0 pentru f în `ls -tr /mnt/dav/out/$filename/*.jpg 2>/dev/null` do newf=`printf %06d $i`.jpg echo $f "-->" $newf mv $f $newf i=$((i+1)) done rmdir -R /mnt/dav/out/$filename/ avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$filename.avi rm *.jpg
Acum tot ce rămâne este să înregistrați execuția scripturilor în planificatorul Cron:
* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
Video de exemplu
Concluzie
Această abordare ajută la eliminarea necesității de a petrece mult timp vizionând videoclipuri și, de asemenea, reduce costul produsului final. Datorită prezenței unui sistem de operare cu drepturi depline, devine posibilă extinderea funcționalității în direcția corectă.

Deoarece Acest computer are performanțe suficiente pentru a primi, stoca, procesa și transmite video de la o cameră (de exemplu, de la o cameră USB) prin wifi către alte dispozitive. Există camere speciale pentru Raspberry PI care se conectează la un conector special al acestuia și camere USB care se conectează la orice port USB pe Raspberry PI. Deoarece Camerele USB, de regulă, sunt mult mai ieftine decât cele speciale (deși mai proaste), așa că în continuare vom lua în considerare utilizarea unei camere USB cu Raspberry PI. Există o serie de programe pentru capturarea video de la o cameră USB sau puteți să vă scrieți propriile programe, dar, de dragul simplității, să ne uităm mai întâi la capturarea și transmiterea video folosind programul de mișcare. Pentru a instala programul de mișcare pe Raspberry PI, trebuie mai întâi să vă conectați la acesta prin programul Putty (sau orice alt program terminal cu capacitatea de a comunica prin SSH) (pentru informații despre cum să faceți acest lucru, consultați articolul anterior „Raspberry PI 3 configurarea și gestionarea GPIO prin WIFI”). După conectarea la Raspberry PI, trebuie să actualizați sistemul folosind comenzile

Sudo apt-get update

Sudo apt-get upgrade

După o actualizare cu succes a sistemului, trebuie să instalați programul de mișcare cu comanda

Sudo apt-get install motion

În timpul instalării vi se poate pune întrebarea „Doriți să continuați?” după care va trebui să introduceți litera „Y”. După instalarea programului motion, va trebui să faceți câteva modificări la fișierele de configurare. Deschideți fișierul motion.conf în editorul nano cu comanda

Sudo nano /etc/motion/motion.conf

Apoi

Inlocuit de

În continuare, vom găsi și alte linii de schimbat, pentru a face acest lucru, apăsați combinația de taste CTRL+W, introduceți „stream_localhost” și apăsați enter, după aceea trebuie găsită linia necesară, dacă nu este găsită, atunci variabila „stream_localhost” ” se numește altceva, de exemplu „webcam_localhost” sau ceva de genul ăsta. După ce linia cu această variabilă este găsită, trebuie

Stream_localhost activat

inlocuit de

Stream_maxrate 1

Și înlocuiți cu

Stream_maxrate 100

Inlocuit de

Apoi

Timp_minim_cadru 0

Inlocuit de

Timp_minim_cadru 1

Acesta din urmă se face astfel încât cadrele să fie scoase o dată pe secundă - acest lucru nu arată foarte bine, dar videoclipul nu va dispărea dacă imaginea se schimbă brusc. Scopul fiecărei variabile poate fi citit în comentarii.
Acum salvați modificările apăsând CTRL+O și enter, apoi apăsați CTRL+X și ieșiți nano editor. Acum haideți să edităm un alt fișier, pentru a face asta introducem comanda

Sudo nano /etc/default/motion

Și înlocuiți linia

Start_motion_daemon=nu

Start_motion_daemon=da

Apoi salvați modificările apăsând CTRL+O și enter și apoi apăsați CTRL+X și ieșiți din editorul nano. Acum puteți începe transferul video (camera USB trebuie să fie conectată la unul dintre porturi) cu comanda

Începe mișcarea serviciului Sudo

Opriți cu comandă

Sudo service motion stop

Pentru a vedea videoclipul, trebuie să deschideți browserul și să introduceți adresa IP a Raspberry PI în bara de adrese, apoi puneți două puncte și 8081 (adresa IP a Raspberry PI: 8081) și apăsați Enter, după care videoclipul de la camera USB ar trebui să apară în browser. Puteți vedea cum se face toate acestea, vedeți rezultatul și altceva în videoclip:

Ca aceasta într-un mod simplu Puteți obține videoclipuri de la o cameră USB conectată la Raspberry PI. Dacă este un Raspberry PI 3 cu wifi încorporat și alimentat de un powerbank (sau altă sursă portabilă de energie electrică) (de exemplu, acesta sau unul mai ieftin, deși nu este recomandat să folosiți unul ieftin, Raspberry PI are nevoie de o sursă de alimentare normală pentru a-și folosi toate capacitățile, este de asemenea foarte indicat să instalați un radiator pentru procesor și alte microcircuite care se dezvoltă în timpul funcționării Raspberry, în mod ideal radiatorul ar trebui să fie din cupru și acoperit cu vopsea neagră specială), apoi pe baza tuturor asta poți face un fel de sistem de supraveghere video, cameră video sau ceva asemănător.




Top