- DVR ruošimas RTSP srautui
- Ruošiu savo avietę Pi
- „OpenCV“ ir kitų bibliotekų diegimas „Raspberry Pi“
- „Raspberry Pi“ programavimas RTSP vaizdo srautui iš vaizdo stebėjimo sistemos
- „Raspberry Pi CCTV Viewer“ testavimas
Šiandien daugumoje darbo vietų ir komercinių pastatų yra stebėjimo sistema, skirta stebėti veiklą. Tačiau dažnai suinteresuotai institucijai ar asmeniniams saugumo darbuotojams sunku nuolat stebėti visų kamerų tiesioginį srautą ir ieškoti įtartinos veiklos. Kai kompiuterio matymas ir mašininis mokymasis vyksta sparčiai, atėjo laikas padaryti mūsų vaizdo stebėjimo sistemas protingesnes. Šiame straipsnyje aptarsime, kaip gauti vaizdo įrašą iš esamo DVR (pvz., „Hikvision“ DVR) per RTSP srautą naudojant „Raspberry pi“ naudojant „Python“ ir „OpenCV“. Tai gavę, galėsime panaudoti „OpenCV“ galią šiuose vaizdo kanaluose, kad aptiktume konkretų objektą, perskaitytumėte transporto priemonės numerio lentelę, veido atpažinimo funkciją ir ko ne!
Dėl šios instrukcijos naudosiu „Hikvision 4“ vaizdo stebėjimo vaizdo įrašymo įrenginį, kuris jau įdiegtas pastate. Visus 4 fotoaparatų ekranus transliuosime į „Raspberry“ ir rodysime jį 5 colių jutiklinio ekrano ekrane, kuriame vartotojas galės pereiti tarp kiekvieno kanalo, jei reikia. Aš tai žinau nedaug, turint omenyje „OpenCV“ galią, ir planuoju ją išplėsti judesio aptikimo, vaizdo įrašų įspėjimo, žmonių stebėjimo ir kt. Pagalba, tačiau palikime visa tai kitai pamokai.
DVR ruošimas RTSP srautui
Prieš pasinerdami į aviečių pi aparatinę įrangą ir pitono kodą, svarbu patikrinti, ar DVR palaiko RTSP ir kaip prie jo prisijungti. Didžiąją laiko dalį praleidau čia įstrigęs, nes atrodo, kad procedūra skiriasi kiekvienam DVR tipui, o jūs turite tai padaryti ir daugybę smūgių bei bandymų. Bet kai tai išsiaiškinsite, tai kiekvieną kartą veikia kaip žavesys.
Pirmiausia įsitikinkite, kad žinote savo DVR sistemos vartotojo vardą ir slaptažodį, ir jis yra prijungtas prie interneto. Taip pat šioje pamokoje aš transliuosiu RTSP tik iš vietinio tinklo, jei turite statinį IP, galite atlikti uosto persiuntimą ir laikytis to paties kituose tinkluose. Kalbant apie šią pamoką, viską atliksime vietiniame tinkle.
1 žingsnis: raskite savo DVR IP adresą. Prijungus DVR prie interneto, jam bus suteiktas savas IP adresas. Šį IP adresą galite rasti savo maršrutizatoriaus konfigūracijos puslapyje arba pačiame DVR ekrane (darant prielaidą, kad prie DVR prijungtas monitorius). Mano maršrutizatoriaus IP adresas buvo http://192.168.11.110/ (pakeistas dėl saugumo)
2 žingsnis: Atidarykite bet kurią pasirinktą interneto naršyklę, įveskite IP adresą ir paspauskite „Enter“. Jūs būsite nukreiptas į DVR prisijungimo puslapį. Kur turite įvesti savo DVR vartotojo vardą (mano vardas pakeistas) ir slaptažodį. Numatytasis vartotojo vardas bus administratorius, bet slaptažodį, kurį turite žinoti. Mano prisijungimo prie DVR ekranas rodomas žemiau, jūsų išvaizda gali skirtis.
3 žingsnis: Po sėkmingo prisijungimo ieškokite RTSP prievado numerio savo DVR, dažniausiai numatytoji reikšmė bus 554, tačiau ji gali pasikeisti. Kol esate čia, žaiskite su konfigūracijos nustatymais ir patikrinkite, ar yra galimybė įgalinti RTSP, jei ne, galite jį praleisti. Čia turite praleisti šiek tiek laiko, nes procedūra skiriasi atsižvelgiant į DVR.
4 žingsnis: Paruoškite savo RTSP nuorodą, pagrindinė RTSP nuoroda bus tokia forma -
rtsp: //
Vėlgi, tai priklauso nuo DVR tipo. Galite rasti „Google“, kad surastumėte jums tinkamiausią. Tas, kuris dirbo, turėjo žemiau pateiktą formatą, taip pat galite pabandyti su šiuo
rtsp: //
Kur
rtsp: // admin: [email protected]: 554 / Srautas / Kanalai / 202 /
5 žingsnis: paleiskite srautą VLC, kad įsitikintumėte, jog jūsų RTSP ryšys veikia. Įdiekite VLC kompiuteryje, kuris yra prijungtas prie to paties tinklo kaip ir DVR, paleiskite jį ir paspauskite „ Ctrl“ + N, jei norite perduoti tinklą. Įveskite URL, kaip parodyta žemiau, ir paspauskite gerai.
Jei RTSP nuoroda veikia taip, kaip turėtų, turėtumėte pamatyti tiesioginį savo vaizdo stebėjimo srautą VLC grotuve, kaip parodyta žemiau. Jei tai sukelia klaidą, turite išsiaiškinti teisingą nuorodą.
Tai padarius, mums nebereikia kalbėti apie tai, kad mūsų DVR leidžia tęsti mūsų aviečių pi.
Ruošiu savo avietę Pi
Tada mes turime nustatyti savo aviečių pi su 5 colių ekranu. Neketinu to gilintis, nes mes jau daug kartų aptarėme. Galite perskaityti šiuos straipsnius,
- Darbo pradžia naudojant „Raspberry Pi“
- 5 colių ekranas su „Raspberry Pi“
Mes naudojame „Raspberry Pi 3 B +“, kuriame veikia „Debian Buster“ OS. Taip pat gali būti gera idėja naudoti „Pi 4“, jei galite, taip pat pridėkite kai kurias aušinimo parinktis, pvz., Radiatorių ar ventiliatorių, nes pastebėjau, kad temperatūra siekia beveik 70 * C. Dabar nesilaikiau jokios aušinimo procedūros, o mano sąranga atrodo taip -
„OpenCV“ ir kitų bibliotekų diegimas „Raspberry Pi“
Kitas žingsnis - įdiegti „OpenCV“ į „Raspberry Pi“. Anksčiau mes diskutavome, kaip sudaryti „OpenCV“ „Raspberry pi“.
- „OpenCV“ diegimas „Raspberry Pi“
- Darbo su „OpenCV“ pradžia
Galite sekti aukščiau pateiktą nuorodą ir sukompiliuoti „OpenCV“ naudodami „Cmake“ arba tiesiog įdiekite jį naudodami „apt-get“ metodą. Aš rekomenduočiau vėliau, jei nesiimsite labai rimtų „OpenCV“ programų. Norėdamas įdiegti „OpenCV“, naudoju šias komandas.
sudo apt atnaujinimas sudo apt įdiekite python3-opencv
Savo programoje taip pat naudosimės „cvui“ biblioteka, kad sukurtume pagrindinę vartotojo sąsają su dviem mygtukais, leidžiančiais naršyti tarp keturių ekranų. Norėdami įdiegti „cvui“, vykdykite toliau pateiktą komandą.
„Python3 pip“ įdiekite „cvui“
Įdiegę abu paketus galime patekti į pagrindinę programą. Įsitikinkite, kad abu įdiegti paketai veikia, bandydami juos importuoti iš „Pi“ komandų terminalo.
„Raspberry Pi“ programavimas RTSP vaizdo srautui iš vaizdo stebėjimo sistemos
Visą šio projekto programą galite rasti šio puslapio pabaigoje. To paties paaiškinimas yra toks. Mes pradedame programą įtraukdami reikiamus antraštės failus.
importuoti cv2 importuoti cvui
Kitą programos dalį reikia šiek tiek redaguoti. Turite įvesti savo DVR vartotojo vardą ir slaptažodį. 5 colių ekranui plotis ir aukštis yra atitinkamai 800 ir 480, taigi mes įvedėme tą patį.
rtsp_username = "admin" rtsp_password = "aswinth347653" plotis = 800 aukštis = 480 cam_no = 1
Toliau turime funkciją, vadinamą sukurti fotoaparatą, kuri bus naudojama kiekvieną kartą keičiant kameros numerį, kurį reikia peržiūrėti.
def create_camera (kanalas): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / Streaming / channels /" + channel + "02" cap = cv2.VideoCapture () cap.open (rtsp) cap.set (3, 640) # ID plotis yra 3 cap.set (4, 480) # ID aukštis yra 480 cap. set (10, 100) # ryškumo ID numeris yra 10qq grąžinimo dangtelis
Pagrindinio ciklo viduje mes turime savo programą, kad galėtume nuskaityti rėmelį iš fiksavimo įrenginio ir konvertuoti jį į visą ekraną. Mūsų programos rodomas langas bus vadinamas ekranu.
sėkmė, current_cam = cam.read () dim = (plotis, aukštis) Full_frame = cv2.resize (current_cam, dim, interpolation = cv2.INTER_AREA) cv2.namedWindow ('screen', cv2.WINDOW_NORMAL) cv2.setWindowProperty ('screen „, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN“
Po to mes turime dviejų mygtukų, kurie bus patalpinti ekrane, kodą. Komanda cvui.button naudojama mygtukui įdėti į reikiamą vietą, o komanda cvui.mouse naudojama pelės paspaudimui aptikti. Mes turime du , jei atskaitomybė du mygtukai, jei spustelėsite, atitinkama , jei pareiškimas bus įvykdytas.
if (cvui.button („Full_frame“, plotis - 100, aukštis - 40, „Kitas“) ir cvui.mouse (cvui.CLICK)): print („Paspaudus kitą mygtuką“) cvui.init ('screen') cam_no = cam_no +1 jei (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.button (Full_frame, width - 200, height - 40, "Previous") ir cvui.mouse (cvui. SPUSTELĖKITE)): spausdinti ("Paspaudus ankstesnį mygtuką") cvui.init ('ekranas') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Jei teiginyje „ if“ , remdamiesi mygtuku, mes padidiname arba sumažiname cam_no skaičių, tada ištriname esamą kumštelį ir sukuriame naują kumštelį naudodamiesi aukščiau aptarta funkcija. Be to, atkreipkite dėmesį, kad „ cvui.init“ turi skambinti kiekvieną kartą, kad atnaujintų vartotojo sąsajos ekraną.
Paskutinė kodo dalis yra rodyti rėmelį kaip išvestį ir išeiti iš išvesties ekrano paspaudus q. Mes tiesiog laukiame klavišo paspaudimo ir jei raktas yra „q“, sunaikinsime visus langus.
cv2.imshow ('screen', Full_frame) if cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
„Raspberry Pi CCTV Viewer“ testavimas
Kodo testavimas yra gana tiesus, įjunkite pi ir paleiskite pitono kodą, pateiktą šio puslapio apačioje. Įsitikinkite, kad įvedėte tinkamus prisijungimo duomenis, kad RTSP nuoroda veiktų. Jei norite būti saugus, taip pat galite pabandyti naudoti „Pi“ VLC grotuvą, kuris iš anksto įdiegtas „Buster“ OS.
Jei jis veikia VLC, tada galime būti tikri, kad mūsų pi prijungtas prie to paties tinklo ir RTSP nuoroda veikia taip, kaip turėtų. Tada atidarykite programą, pateiktą šio puslapio apačioje, ir paleiskite ją naudodami bet kurį „python IDE“. Jei kredencialai įvedami teisingai, pamatysite šį ekraną. Kuris rodo tiesioginės kameros tiekimą su dviem mygtukais apačioje.
Kadangi ekrane yra TFT jutiklinis ekranas, galite tiesiog paliesti mygtukus „ankstesnis“ ir „kitas“, kad pereitumėte prie kitos kameros. Programa yra parašyta kilpa tarp pirmųjų keturių kamerų, ją galite lengvai modifikuoti, jei prie jūsų DVR yra prijungta daugiau nei 4 kameros.
Visą šio projekto darbą galite rasti žemiau esančiame vaizdo įraše. Tikimės, kad jums patiko pamoka ir sužinojote ką nors naudingo, jei turite klausimų, palikite juos komentarų skyriuje arba galite naudoti mūsų forumus kitiems savo poreikiams paskelbti. Be to, planuoju prie šios sąrankos pridėti judesio aptikimo ir vaizdo įrašymo funkciją, todėl sekite ir tai.