- DVR sagatavošana RTSP straumēšanai
- Sagatavo savu Raspberry Pi
- OpenCV un citu bibliotēku instalēšana Raspberry Pi
- Raspberry Pi programmēšana RTSP video straumēšanai no CCTV
- Raspberry Pi CCTV skatītāja testēšana
Mūsdienās lielākajā daļā darbavietu un komerciālo ēku darbību novērošanai ir uzstādīta videonovērošanas sistēma. Bet bieži vien attiecīgajai iestādei vai drošības personālam ir grūti nepārtraukti uzraudzīt visu kameru tiešraidi, lai meklētu aizdomīgas darbības. Tā kā datora redze un mašīnmācīšanās notiek strauji, ir pienācis laiks padarīt mūsu videonovērošanas sistēmas gudrākas. Šajā rakstā mēs apspriedīsim, kā iegūt video plūsmu no esoša DVR (piemēram, Hikvision DVR), izmantojot RTSP straumēšanu ar Raspberry pi, izmantojot Python un OpenCV. Kad mēs to iegūsim, mēs varēsim izmantot OpenCV spēku šajās video plūsmās, lai noteiktu konkrētu objektu, izlasītu transportlīdzekļa numura zīmi, sejas atpazīšanu un ko ne!
Šīs apmācības labad es izmantoju Hikvision 4 kanālu videonovērošanas kameru, kas jau ir uzstādīta ēkā. Mēs straumēsim visus 4 kameras ekrānus uz Raspberry un parādīsim to 5 collu skārienekrāna displejā, kur lietotājs var pārslēgties starp katru kanālu pēc nepieciešamības. Es to zinu maz, ņemot vērā OpenCV jaudu, un man ir plāni to paplašināt ar kustības noteikšanu, bugleru video brīdinājumu, personu izsekošanu utt., Bet atstāsim to visu citai apmācībai.
DVR sagatavošana RTSP straumēšanai
Pirms mēs ienirstam aveņu pi aparatūrā un pitona kodā, ir svarīgi pārbaudīt, vai DVR atbalsta RTSP un kā tam piekļūt. Es pavadīju lielāko daļu sava laika, kas šeit iestrēdzis, jo procedūra, šķiet, atšķiras katram DVR veidam, un jums tas jādara, kā arī daudz hits un jāmēģina. Bet, kad jūs to izdomājat, tas katru reizi darbojas kā šarms.
Pirmkārt, pārliecinieties, vai zināt DVR sistēmas lietotājvārdu un paroli, un tā ir savienota ar internetu. Arī šajā apmācībā es straumēšu RTSP tikai no vietējā tīkla, ja jums ir statisks IP, varat veikt portu pārsūtīšanu un to pašu ievērot arī citiem tīkliem. Bet, kas attiecas uz šo apmācību, mēs visu darīsim vietējā tīklā.
1. darbība: atrodiet DVR IP adresi. Kad DVR ir izveidots savienojums ar internetu, tam tiks piešķirta sava IP adrese. Šo IP adresi varat atrast vai nu maršrutētāja konfigurācijas lapā, vai arī pašā DVR ekrānā (pieņemot, ka DVR ir pievienots monitors). Mana maršrutētāja IP adrese bija http://192.168.11.110/ (drošības apsvērumu dēļ mainīta)
2. solis: Atveriet jebkuru izvēlēto tīmekļa pārlūkprogrammu un ievadiet IP adresi un nospiediet Enter. Jūs tiksiet novirzīts uz DVR pieteikšanās lapu. Kur jums jāievada DVR lietotājvārds (manējais tiek mainīts) un parole. Noklusējuma lietotājvārds būs admin, bet parole, kas jums jāzina. Mans DVR pieteikšanās ekrāns ir parādīts zemāk, iespējams, ka tas atšķiras.
3. solis: Pēc veiksmīgas pieteikšanās meklējiet DVR RTSP porta numuru, visbiežāk noklusējuma vērtība būs 554, bet tā var mainīties. Kamēr esat šeit, spēlējiet konfigurācijas iestatījumus, lai pārbaudītu, vai ir iespēja iespējot RTSP, ja nē, varat to izlaist. Jums šeit jāpavada nedaudz laika, jo procedūra ir atšķirīga, pamatojoties uz DVR.
4. solis: Sagatavojiet savu RTSP saiti, pamata RTSP saite būs šādā formātā:
rtsp: //
Atkal, tas ir atkarīgs no DVR veida, varat izmantot google, lai atrastu to, kas jums darbosies. Tam, kurš strādāja, bija zemāk redzamais formāts, varat arī izmēģināt ar šo-
rtsp: //
Kur
rtsp: // admin: [email protected]: 554 / Straumēšana / Kanāli / 202 /
5. solis: atskaņojiet straumi VLC, lai pārliecinātos, ka RTSP savienojums darbojas. Instalējiet VLC datorā, kas ir savienots ar to pašu tīklu ar DVR, palaidiet to un nospiediet taustiņu kombināciju Ctrl + N tīkla straumēšanai. Ievadiet URL, kā parādīts zemāk, un nospiediet Labi.
Ja RTSP saite darbojas tā, kā vajadzētu, jums vajadzētu redzēt jūsu CCTV tiešraidi VLC atskaņotājā, kā parādīts zemāk. Ja tas rada kļūdu, jums ir jāizdomā pareizā saite.
Kad tas ir izdarīts, mums vairs nav jārunā par to, ka mūsu DVR ļauj tikt tālāk ar mūsu Aveņu pi.
Sagatavo savu Raspberry Pi
Tālāk mums jāiestata mūsu aveņu pī ar 5 collu displeju. Es negrasos iedziļināties tā detaļās, jo mēs to jau esam aprakstījuši daudzas reizes. Norādījumus varat izlasīt šādos rakstos:
- Darba sākšana ar Raspberry Pi
- Saskarīgs 5 collu displejs ar Raspberry Pi
Mēs izmantojam Raspberry Pi 3 B +, kurā darbojas Debian Buster OS. Var būt arī laba ideja izmantot Pi 4, ja jūs varat, kā arī pievienot dažas dzesēšanas iespējas, piemēram, radiatoru vai ventilatoru, jo es pamanīju, ka temperatūra sasniedz gandrīz 70 * C. Pašlaik es neievēroju nevienu dzesēšanas procedūru, un mans iestatījums izskatās šādi -
OpenCV un citu bibliotēku instalēšana Raspberry Pi
Nākamais solis ir OpenCV instalēšana Raspberry Pi. Iepriekš mēs esam apsprieduši, kā kompilēt OpenCV vietnē Raspberry pi.
- OpenCV instalēšana Raspberry Pi
- Darba sākšana ar OpenCV
Varat vai nu sekot iepriekš minētajai saitei un kompilēt OpenCV, izmantojot Cmake, vai vienkārši instalēt to ar metodi apt-get. Es iesaku vēlāk, ja neesat ļoti nopietns OpenCV programmēšana. Es izmantoju šādas komandas, lai instalētu OpenCV.
sudo apt atjauninājums sudo apt instalēt python3-opencv
Mūsu programmā mēs izmantosim arī “cvui” bibliotēku, lai izveidotu pamata lietotāja interfeisu ar divām pogām, kas ļauj mums pārvietoties starp četriem ekrāniem. Lai instalētu cvui, izpildiet tālāk norādīto komandu.
Python3 pip instalē cvui
Ar abām instalētajām pakotnēm mēs varam iekļūt galvenajā programmā. Pārliecinieties, vai abas instalētās pakotnes darbojas, pērkot, mēģinot tās importēt no Pi komandu termināļa.
Raspberry Pi programmēšana RTSP video straumēšanai no CCTV
Pilna šī projekta programma ir atrodama šīs lapas beigās. To pašu izskaidro šādi. Mēs sākam programmu, iekļaujot nepieciešamos galvenes failus.
importēt cv2 importēt cvui
Nākamajai programmas daļai ir nepieciešama rediģēšana. Jums jāievada DVR lietotājvārds un parole. 5 collu displejam platums un augstums ir attiecīgi 800 un 480, tāpēc mēs esam ievadījuši to pašu.
rtsp_username = "admin" rtsp_password = "aswinth347653" width = 800 height = 480 cam_no = 1
Turpinot, mums ir funkcija, kuras nosaukums ir izveidot kameru, kas tiks izmantota katru reizi, kad mainīsim kameras numuru, kas ir jāapskata.
def create_camera (kanāls): 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 platumam ir 3 cap.set (4, 480) # ID augstumam ir 480 cap.set (10, 100) # ID spilgtumam ir 10qq atgriešanās vāciņš
Galvenā kamēr cilpa iekšpusē mums ir mūsu programma, lai lasītu kadru no uztveršanas ierīces un pārveidotu to pilnekrāna režīmā. Mūsu programmas displeja logs tiks saukts par ekrānu.
panākumi, current_cam = cam.read () dim = (platums, augstums) 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)
Pēc tam mums ir kods divām pogām, kas tiks ievietotas ekrānā. Komanda cvui.button tiek izmantota, lai pogu novietotu vajadzīgajā vietā, un komanda cvui.mouse tiek izmantota, lai noteiktu peles klikšķi. Mums ir divi , ja pārskatus par divām pogām, ja poga ir noklikšķinājuši, attiecīgais ja paziņojums tiks izpildīts.
if (poga cvui. (Full_frame, platums - 100, augstums - 40, "Nākamais") un cvui.mouse (cvui.CLICK)): print ("Nākamā poga ir nospiesta") cvui.init ('ekrāns') cam_no = cam_no +1 if (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.button (Full_frame, width - 200, height - 40, "Previous") un cvui.mouse (cvui. CLICK)): print ("Iepriekšējā poga ir nospiesta") cvui.init ('screen') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Inside ja paziņojumu, pamatojoties uz pogas mēs vai nu palielināt vai samazināt cam_no skaitīšanas un pēc tam izdzēsiet esošo cam un izveidot jaunu cam, izmantojot funkciju mēs apspriedām iepriekš. Ņemiet vērā arī to, ka cvui.init ir jāzvana katru reizi, lai atsvaidzinātu lietotāja saskarnes ekrānu.
Pēdējā koda daļa ir rāmja parādīšana kā izvade un iziešana no izvades ekrāna, nospiežot q. Mēs vienkārši gaidām taustiņu un, ja taustiņš ir “q”, mēs iznīcināsim visus logus.
cv2.imshow ('screen', Full_frame) if cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Raspberry Pi CCTV skatītāja testēšana
Koda pārbaude ir diezgan vienkārša, ieslēdziet pi un palaidiet pitona kodu, kas norādīts šīs lapas apakšdaļā. Pārliecinieties, vai esat ievadījis pareizos akreditācijas datus, lai RTSP saite darbotos. Ja vēlaties būt drošībā, varat arī mēģināt izmantot VLC atskaņotāju Pi, kas ir iepriekš instalēts buster OS.
Ja tas darbojas VLC, tad mēs varam būt pārliecināti, ka mūsu pi savienojums ar to pašu tīklu un RTSP saite darbojas kā vajadzētu. Pēc tam atveriet programmu, kas dota šīs lapas apakšdaļā, un palaidiet to, izmantojot jebkuru pitona IDE. Ja akreditācijas dati ir ievadīti pareizi, tiks parādīts šāds ekrāns. Kas parāda tiešraides kameras padevi ar divām pogām apakšā.
Tā kā ekrānam ir TFT skārienekrāns, varat vienkārši pieskarties pogām “iepriekšējā” un “nākamā”, lai pārietu uz nākamo kameru. Programma ir rakstīta uz cilpu starp pirmajām četrām kamerām, to var viegli modificēt, ja jūsu DVR ir pievienotas vairāk nekā 4 kameras.
Pilnīga šī projekta darbība ir atrodama zemāk esošajā videoklipā. Ceru, ka jums patika apmācība un uzzinājāt kaut ko noderīgu, ja jums ir kādi jautājumi, atstājiet tos komentāru sadaļā vai arī varat izmantot mūsu forumus, lai publicētu citus jautājumus. Es arī plānoju šai iestatīšanai pievienot kustības noteikšanas un video saglabāšanas funkciju, tāpēc sekojiet līdzi arī tam.