- DVR: n valmistelu RTSP-suoratoistoa varten
- Vadelma Pi: n valmistelu
- OpenCV: n ja muiden kirjastojen asentaminen Raspberry Pi: lle
- Raspberry Pi -ohjelmointi RTSP-videon suoratoistoon CCTV: stä
- Raspberry Pi CCTV Viewerin testaaminen
Suurimmalla osalla työpaikoista ja liikerakennuksista on nykyään CCTV-valvontajärjestelmä, joka valvoo toimintaa. Mutta usein asianomaisen viranomaisen tai turvallisuushenkilöiden on vaikea seurata kaikkien kameroiden suoraa syötettä epäilyttävän toiminnan etsimiseksi. Tietokonenäkö ja koneoppiminen etenevät nopeasti, on aika tehdä CCTV-järjestelmistämme älykkäämpiä. Tässä artikkelissa keskustelemme siitä, kuinka saada videosyöttö olemassa olevalta DVR: ltä (kuten Hikvision DVR) RTSP-suoratoiston kautta Raspberry pi: llä Pythonin ja OpenCV: n avulla. Kun olemme saaneet tämän, voimme hyödyntää OpenCV: n voimaa näissä videosyötteissä havaita tietty objekti, lukea ajoneuvon rekisterikilpi, kasvojentunnistus ja mitä ei!
Tämän opetusohjelman vuoksi käytän Hikvision 4 -kanavaista CCTV-DVR: ää, joka on jo asennettu rakennukseen. Suoratoistamme kaikki 4 kameranäyttöä Vadelmaan ja näytämme sen 5 tuuman kosketusnäytöllä, jossa käyttäjä voi siirtyä kanavien välillä tarpeen mukaan. Tiedän tämän paljon, kun otetaan huomioon OpenCV: n voima, ja minulla on suunnitelmia laajentaa sitä liiketunnistuksella, bugler-videohälytyksellä, henkilöiden seurannalla jne., Mutta jätetään kaikki toiseen opetusohjelmaan.
DVR: n valmistelu RTSP-suoratoistoa varten
Ennen kuin sukellamme vadelma pi -laitteistoon ja python-koodiin, on tärkeää tarkistaa, tukeeko DVR RTSP: tä ja miten siihen pääsee. Vietin suurimman osan ajastani jumissa täällä, koska menettely näyttää erilaiselta jokaiselle DVR-tyypille, ja sinun on tehtävä ja paljon osumia ja yritettävä. Mutta kun olet selvittänyt tämän, se toimii kuin viehätys joka kerta.
Ensinnäkin, varmista, että tiedät DVR-järjestelmän käyttäjätunnuksen ja salasanan ja että se on yhteydessä Internetiin. Myös tässä opetusohjelmassa suoratoistan RTSP: n vain paikallisesta verkosta, jos sinulla on staattinen IP, voit tehdä portin edelleenlähetyksen ja seurata samaa muille verkoille. Mutta mitä tämä opetusohjelma koskee, teemme kaiken paikallisen verkon sisällä.
Vaihe 1: Etsi DVR : n IP-osoite. Kun DVR on kytketty Internetiin, sille annetaan oma IP-osoite. Löydät tämän IP-osoitteen joko reitittimen asetussivulta tai itse DVR-näytöltäsi (olettaen, että DVR: ään on kytketty näyttö). Reitittimen IP-osoite oli http://192.168.11.110/ (muutettu turvallisuussyistä)
Vaihe 2: Avaa mikä tahansa valitsemasi verkkoselain ja anna IP-osoite ja paina Enter. Sinut ohjataan DVR-kirjautumissivulle. Missä sinun on annettava DVR: n käyttäjänimi (minun on vaihdettu) ja salasana. Oletuskäyttäjänimi on admin, mutta sinun on tiedettävä salasana. Sisäänkirjautumisnäyttöni DVR: lle näkyy alla, saatat olla erilainen ulkonäöltään.
Vaihe 3: Kun olet kirjautunut sisään onnistuneesti, etsi DVR: lläsi RTSP-porttinumero, useimmiten oletusarvo on 554, mutta se saattaa muuttua. Kun olet täällä, pelaa kokoonpanoasetuksilla tarkistaaksesi, onko RTSP: n käyttöönottovaihtoehto, ellet voi ohittaa sitä. Sinun täytyy viettää aikaa täällä, koska menettely on erilainen DVR: n perusteella.
Vaihe 4: Valmistele RTSP-linkki, RTSP-peruslinkki on seuraavassa muodossa -
rtsp: //
Jälleen, se riippuu DVR: n tyypistä, voit käyttää Googlea löytääksesi sinulle sopivan. Se, joka toimi, oli alla olevassa muodossa, voit myös kokeilla tätä-
rtsp: //
Missä
rtsp: // admin: [email protected]: 554 / Suoratoisto / Kanavat / 202 /
Vaihe 5: Toista suoratoisto VLC: llä varmistaaksesi, että RTSP-yhteys toimii. Asenna VLC tietokoneelle, joka on kytketty samaan verkkoon kuin DVR, käynnistä se ja paina Ctrl + N suoratoistoa varten. Kirjoita URL alla olevan kuvan mukaisesti ja paina OK.
Jos RTSP-linkki toimii samalla tavalla kuin pitäisi, sinun pitäisi nähdä CCTV: n suoratoisto VLC-soittimessa alla olevan kuvan mukaisesti. Jos se heittää virheen, sinun on selvitettävä oikea linkki.
Kun tämä on tehty, meidän ei enää tarvitse puhua DVR: stä, jonka avulla voimme jatkaa Vadelma pi -laitteemme kanssa.
Vadelma Pi: n valmistelu
Seuraavaksi meidän on asetettava vadelma-pii 5 tuuman näytöllä. En aio mennä sen yksityiskohtiin, koska olemme jo käsitelleet niin monta kertaa. Voit lukea seuraavat artikkelit ohjeeksi-
- Raspberry Pi: n käytön aloittaminen
- 5-tuumaisen näytön ja Raspberry Pi: n kanssa
Käytämme Raspberry Pi 3 B + -sovellusta, jossa on käynnissä Debian Buster -käyttöjärjestelmä. Saattaa myös olla hyvä käyttää Pi 4: ää, jos voit ja myös lisätä joitain jäähdytysvaihtoehtoja, kuten jäähdytyselementti tai tuuletin, koska huomasin lämpötilan olevan melkein 70 * C. En seurannut mitään jäähdytysmenettelyä tällä hetkellä, ja kokoonpanoni näyttää tältä -
OpenCV: n ja muiden kirjastojen asentaminen Raspberry Pi: lle
Seuraava vaihe on asentaa OpenCV Raspberry Pi: lle. Olemme aiemmin keskustelleet siitä, miten OpenCV kootaan Raspberry pi: lle.
- OpenCV: n asentaminen Raspberry Pi: lle
- OpenCV: n käytön aloittaminen
Voit joko seurata yllä olevaa linkkiä ja kääntää OpenCV: n käyttämällä Cmakea tai vain asentaa sen apt-get-menetelmällä. Suosittelen myöhempää, jos et ole kovin vakava OpenCV-ohjelmointi. Käytin seuraavia komentoja OpenCV: n asentamiseen.
sudo apt päivitys sudo apt asenna python3-opencv
Ohjelmassa käytämme myös "cvui" -kirjastoa luomaan peruskäyttöliittymän kahdella painikkeella, joiden avulla voimme navigoida neljän näytön välillä. Asenna cvui noudattamalla seuraavaa komentoa.
Python3 pip asenna cvui
Molempien pakettien asentamisen jälkeen pääsemme pääohjelmaan. Varmista, että molemmat asennetut paketit toimivat ostaen ja yrittää tuoda ne Pi: n komentoterminaalista.
Raspberry Pi -ohjelmointi RTSP-videon suoratoistoon CCTV: stä
Tämän projektin täydellinen ohjelma on tämän sivun lopussa. Saman selitys on seuraava. Aloitamme ohjelman sisällyttämällä vaaditut otsikkotiedostot.
tuonti cv2 tuonti cvui
Seuraava ohjelman osa vaatii muokkausta. Sinun on annettava DVR: n käyttäjänimi ja salasana. 5 tuuman näytössä leveys ja korkeus ovat 800 ja 480, joten olemme syöttäneet saman.
rtsp_username = "admin" rtsp_password = "aswinth347653" leveys = 800 korkeus = 480 cam_no = 1
Siirtymällä eteenpäin meillä on toiminto nimeltä luoda kamera, jota käytetään joka kerta, kun vaihdamme katsottavaa kameranumeroa.
def create_camera (kanava): 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-numero leveydelle on 3 cap-set (4, 480) # ID-numero korkeudelle on 480 cap.set (10, 100) # ID-numero kirkkaudelle on 10qq paluukansi
Pään while-silmukan sisällä meillä on ohjelmamme lukea kehys sieppauslaitteesta ja muuntaa se koko näytöksi. Ohjelmamme näyttöikkunaa kutsutaan näytöksi.
menestys, current_cam = cam.read () dim = (leveys, korkeus) 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)
Sen jälkeen meillä on koodi kahdelle ruudulle sijoitettavalle painikkeelle. Komento cvui.button käytetään sijoittaa -painiketta vaadittuun paikkaan ja käsky cvui.mouse käytetään havaitsemaan hiiren napsautuksella. Meillä on kaksi , jos lausunnot kaksi painikkeita, jos painiketta napsautetaan, vastaava jos selvitys toteutetaan.
if (cvui.button (Koko_kehys, leveys - 100, korkeus - 40, "Seuraava") ja cvui.mouse (cvui.CLICK)): tulosta ("Seuraava painike painettu") cvui.init ('näyttö') cam_no = cam_no +1 jos (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.painike (Full_frame, leveys - 200, korkeus - 40, "Edellinen") ja cvui.mouse (cvui. NAPSAUTA)): tulosta ("Edellinen painike painettu") cvui.init ('näyttö') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Sisällä jos selvitys, joka perustuu painikkeen me joko lisätä tai vähentää cam_no määrä ja sitten poistaa vanhan nokka ja luo uusi nokka funktiolla me edellä. Huomaa myös, että cvui.init on soitettava joka kerta päivittää käyttöliittymän näyttö.
Koodin viimeinen osa on näyttää kehys ulostulona ja poistua lähtöruudulta, kun q painetaan. Odotamme vain näppäilyä ja jos avain on q, tuhoamme kaikki ikkunat.
cv2.imshow ('screen', Full_frame) if cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Raspberry Pi CCTV Viewerin testaaminen
Koodin testaaminen on melko suoraviivaista, käynnistä pi ja käynnistä tämän sivun alaosassa annettu python-koodi. Varmista, että olet antanut oikeat tunnistetiedot, jotta RTSP-linkki toimii. Jos haluat olla turvallisella puolella, voit myös yrittää käyttää Pi: n VLC-soitinta, joka on esiasennettu Buster-käyttöjärjestelmään.
Jos se toimii VLC: llä, voimme olla varmoja, että samaan verkkoon yhdistetty pii ja RTSP-linkki toimivat kuten pitäisi. Avaa sitten tämän sivun alaosassa annettu ohjelma ja käynnistä se millä tahansa python IDE: llä. Jos tunnistetiedot syötetään oikein, näet seuraavan näytön. Mikä näyttää reaaliaikaisen kameran syötteen, jonka alaosassa on kaksi painiketta.
Koska näytöllä on TFT-kosketusnäyttö, voit siirtyä seuraavalle kameralle koskettamalla "edellinen" ja "seuraava" -painikkeita. Ohjelma on kirjoitettu silmukkaan neljän ensimmäisen kameran välillä. Voit helposti muokata sitä, jos DVR-laitteeseesi on kytketty yli 4 kameraa.
Tämän projektin täydellinen toiminta löytyy alla olevasta videosta. Toivottavasti pidit opetusohjelmasta ja opit jotain hyödyllistä, jos sinulla on kysyttävää, jätä ne kommenttiosioon tai voit myös käyttää foorumeitamme muiden kyselyjesi lähettämiseen. Aion myös lisätä liiketunnistuksen ja videon säästöominaisuuden tähän kokoonpanoon, joten pysy kuulolla myös siitä.