- Paghahanda ng DVR para sa RTSP Streaming
- Paghahanda ng iyong Raspberry Pi
- Pag-install ng OpenCV at Iba Pang Mga Aklatan sa Raspberry Pi
- Programming Raspberry Pi para sa Streaming ng RTSP Video mula sa CCTV
- Pagsubok sa Raspberry Pi CCTV Viewer
Karamihan sa mga lugar ng trabaho at komersiyal na gusali ngayon ay may naka-install na CCTV surveillance system upang masubaybayan ang mga aktibidad. Ngunit madalas na beses mahirap para sa nag-aalala na awtoridad o mga security personals na subaybayan ang live feed ng lahat ng mga camera na patuloy na maghanap ng kahina-hinalang aktibidad. Sa pag-unlad ng paningin ng computer at pag-aaral ng makina sa isang mabilis na yugto, ito ay tungkol sa oras na ginagawa nating mas matalino ang aming mga system sa CCTV. Sa artikulong ito, tatalakayin namin kung paano makukuha ang video feed mula sa isang mayroon nang DVR (tulad ng Hikvision DVR) sa pamamagitan ng RTSP streaming kasama ang Raspberry pi gamit ang Python at OpenCV. Kapag nakuha namin ito, magagawa naming magamit ang lakas ng OpenCV sa mga feed ng video na ito upang matukoy para sa isang partikular na bagay, basahin ang plate ng numero ng sasakyan, pagkilala sa mukha, at kung ano ang hindi!
Alang-alang sa tutorial na ito, gagamit ako ng isang Hikvision 4 channel CCTV DVR na naka-install na sa gusali. Ire-streaming namin ang lahat ng 4 na mga screen ng camera sa Raspberry at ipapakita ito sa isang 5-inch touch screen display kung saan maaaring lumipat ang gumagamit sa pagitan ng bawat channel kung kinakailangan. Hindi ko alam ito, isinasaalang-alang ang lakas ng OpenCV at mayroon akong mga plano na sukatin ito sa paggalaw ng paggalaw, alerto sa video ng bugler, pagsubaybay sa tao, atbp. Ngunit iwanan natin ang lahat ng iyon para sa isa pang tutorial.
Paghahanda ng DVR para sa RTSP Streaming
Bago kami sumisid sa hardware ng raspberry pi at python code, mahalagang suriin kung sinusuportahan ng DVR ang RTSP at kung paano ito mai-access. Ginugol ko ang karamihan ng aking oras na natigil dito dahil ang pamamaraan ay tila naiiba para sa bawat uri ng DVR at kailangan mong gawin at maraming mga hit at subukan. Ngunit sa sandaling malaman mo ito, gumagana ito tulad ng isang alindog sa bawat oras.
Una sa lahat, tiyaking alam mo ang username at password ng iyong DVR system, at nakakonekta ito sa internet. Sa tutorial din na ito, mai-streaming ko lamang ang RTSP mula sa isang lokal na network, kung mayroon kang isang static IP, maaari mong gawin ang pagpapasa ng port at sundin ang pareho para sa iba pang mga network. Ngunit tungkol sa tungkol sa tutorial na ito ay nababahala, gagawin namin ang lahat sa loob ng lokal na network.
Hakbang 1: Hanapin ang IP address ng iyong DVR. Kapag ang DVR ay konektado sa Internet, itatalaga ito sa sarili nitong IP address. Mahahanap mo ang IP address na ito alinman mula sa iyong pahina ng pagsasaayos ng router o mula mismo sa iyong screen ng DVR (ipagpalagay na mayroon kang isang monitor na konektado sa DVR). Ang IP address ng aking router ay http://192.168.11.110/ (binago para sa mga kadahilanang pangkaligtasan)
Hakbang 2: Buksan ang anumang web browser na iyong pinili at ipasok ang IP address at pindutin ang enter. Dadalhin ka sa pahina ng pag-login sa DVR. Kung saan mo kailangang ipasok ang username (ang aking binago) at password para sa iyong DVR. Ang default na username ay magiging admin, ngunit ang password na dapat mong malaman. Ang aking login screen para sa DVR ay ipinapakita sa ibaba, maaaring magkakaiba ang iyong hitsura.
Hakbang 3: Matapos ang isang matagumpay na pag-login, hanapin ang numero ng port ng RTSP sa iyong DVR, sa karamihan ng mga oras, ang default na halaga ay 554 ngunit maaaring mabago ito. Habang narito ka sa paglalaro ng mga setting ng pagsasaayos upang suriin kung mayroong isang pagpipilian upang paganahin ang RTSP, kung hindi maaari mo itong laktawan. Kailangan mong gumastos ng ilang oras dito dahil ang pamamaraan ay naiiba batay sa DVR.
Hakbang 4: Ihanda ang iyong link sa RTSP, ang pangunahing link ng RTSP ay nasa sumusunod na format-
rtsp: //
Muli, depende ito sa uri ng DVR, maaari mong gamitin ang google upang mahanap ang isa na gagana para sa iyo. Ang isa na nagtatrabaho ay mayroong format sa ibaba, maaari mo ring subukan kasama nito-
rtsp: //
Kung saan
rtsp: // admin: [email protected]: 554 / Streaming / Channels / 202 /
Hakbang 5: I-play ang stream sa VLC upang matiyak na gumagana ang iyong koneksyon sa RTSP. I-install ang VLC sa isang computer na konektado sa parehong network tulad ng DVR, ilunsad ito, at pindutin ang Ctrl + N para sa streaming ng network. Ipasok ang URL tulad ng ipinakita sa ibaba at pindutin ang okay.
Kung ang link ng RTSP ay gumagana sa paraang dapat, dapat mong makita ang isang live stream ng iyong CCTV sa VLC player tulad ng ipinakita sa ibaba. Kung nagtatapon ito ng isang error pagkatapos ay kailangan mong malaman ang tamang link.
Sa tapos na ito, hindi na namin kailangang pag-usapan ang tungkol sa aming DVR na hinahayaan na sumakay sa aming Raspberry pi.
Paghahanda ng iyong Raspberry Pi
Susunod, kailangan naming i-set-up ang aming raspberry pi gamit ang 5-inch Display. Hindi ko makukuha ang mga detalye ng iyon dahil nasakop na namin iyon nang maraming beses. Maaari mong basahin ang mga sumusunod na artikulo para sa patnubay-
- Pagsisimula sa Raspberry Pi
- Pag-interface ng 5-Inch Display kasama ang Raspberry Pi
Gumagamit kami ng isang Raspberry Pi 3 B + na tumatakbo dito ang Debian Buster OS. Maaari ding maging isang magandang ideya na gamitin ang Pi 4 kung maaari mo at magdagdag din ng ilang mga pagpipilian sa paglamig tulad ng isang heatsink o Fan dahil napansin ko ang temperatura na umabot sa halos 70 * C. Hindi ako sumunod sa anumang pamamaraang paglamig tulad ng ngayon, at ang aking set-up ay ganito-
Pag-install ng OpenCV at Iba Pang Mga Aklatan sa Raspberry Pi
Susunod na hakbang ay ang pag-install ng OpenCV sa Raspberry Pi. Tinalakay na namin dati kung paano mag-compile ng OpenCV sa Raspberry pi.
- Pag-install ng OpenCV sa Raspberry Pi
- Pagsisimula sa OpenCV
Maaari mong sundin ang link sa itaas at i-compile ang OpenCV gamit ang Cmake o i-install lamang ito sa isang apt-get na pamamaraan. Inirerekumenda ko ang paglaon kung hindi ka masyadong seryoso sa programa ng OpenCV. Ginamit ko ang mga sumusunod na utos upang mai-install ang OpenCV.
sudo apt update sudo apt install python3-opencv
Sa aming programa, gagamitin din namin ang library na "cvui" upang lumikha ng isang pangunahing UI na may dalawang mga pindutan na nagbibigay-daan sa amin upang mag-navigate sa pagitan ng apat na mga screen. Upang mai-install ang cvui sundin ang utos sa ibaba.
Python3 pip install cvui
Sa parehong naka-install na mga pakete, maaari kaming makapasok sa pangunahing programa. Siguraduhin na ang parehong naka-install na mga pakete ay gumagana bumili ng sinusubukang i-import ang mga ito mula sa command terminal ng Pi.
Programming Raspberry Pi para sa Streaming ng RTSP Video mula sa CCTV
Ang kumpletong programa para sa proyektong ito ay matatagpuan sa dulo ng pahinang ito. Ang paliwanag ng pareho ay ang mga sumusunod. Sinimulan namin ang programa sa pamamagitan ng pagsasama ng kinakailangang mga file ng header.
import cv2 import cvui
Ang susunod na bahagi ng programa ay nangangailangan ng ilang pag-edit. Kailangan mong ipasok ang username at password ng iyong DVR. Para sa isang 5inch display, ang lapad at taas ay 800 at 480 ayon sa pagkakabanggit, kaya't pareho kaming nakapasok.
rtsp_username = "admin" rtsp_password = "aswinth347653" lapad = 800 taas = 480 cam_no = 1
Sa pagpapatuloy, mayroon kaming isang function na tinatawag na lumikha ng isang camera na gagamitin sa tuwing binabago namin ang numero ng camera na kailangang matingnan.
def create_camera (channel): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / Streaming / channels /" + channel + "02" cap = cv2.VideoCapture () cap. bukas (rtsp) cap.set (3, 640) # Ang numero ng ID para sa lapad ay 3 cap.set (4, 480) # Ang numero ng ID para sa taas ay 480 cap.set (10, 100) # Ang numero ng ID para sa ningning ay 10qq ibalik ang takip
Sa loob ng pangunahing habang loop, mayroon kaming aming programa na basahin ang isang frame mula sa aparato ng pagkuha at i-convert ito sa buong screen. Ang display window sa aming programa ay tatawaging isang screen.
tagumpay, current_cam = cam.read () dim = (lapad, taas) 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)
Sinusundan ng mayroon kaming code para sa dalawang mga pindutan na ilalagay sa screen. Ginagamit ang command cvui.button upang ilagay ang pindutan sa isang kinakailangang lugar at ginagamit ang command cvui.mouse upang makita ang pag-click sa mouse. Mayroon kaming dalawa kung mga pahayag para sa dalawang mga pindutan kung ang pindutan ay na-click, ang kani-kanilang kung pahayag ay papatayin.
kung (cvui.button (Full_frame, lapad - 100, taas - 40, "Susunod") at cvui.mouse (cvui.CLICK)): i-print ("Susunod na Button Pinindot") cvui.init ('screen') cam_no = cam_no +1 kung (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) kung (cvui.button (Full_frame, lapad - 200, taas - 40, "Nakaraan") at cvui.mouse (cvui. CLICK)): print ("Previous Button Pressed") cvui.init ('screen') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Sa loob ng pahayag kung , batay sa pindutan na maaari naming dagdagan o bawasan ang bilang ng cam_ at pagkatapos ay tanggalin ang umiiral na cam at lumikha ng isang bagong cam gamit ang pagpapaandar na tinalakay sa itaas. Gayundin, tandaan na ang cvui.init ay kailangang tumawag sa bawat oras upang i-refresh ang UI screen.
Pangwakas na bahagi ng code ay upang ipakita ang frame bilang output at para sa paglabas mula sa output screen kapag pinindot ang q. Naghihintay lang kami para sa isang keystroke at kung ang susi ay 'q', sisirain namin ang lahat ng mga bintana.
cv2.imshow ('screen', Full_frame) kung cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () masira
Pagsubok sa Raspberry Pi CCTV Viewer
Ang pagsubok sa code ay medyo tuwid, paandarin ang pi, at ilunsad ang code ng sawa na ibinigay sa ilalim ng pahinang ito. Tiyaking naipasok mo ang tamang mga kredensyal para gumana ang link ng RTSP. Kung nais mong maging nasa ligtas na bahagi, maaari mo ring subukang gamitin ang VLC player sa Pi na paunang naka-install sa buster OS.
Kung gumagana ito sa VLC, maaari naming siguraduhin na ang aming pi na konektado sa parehong network at ang RTSP link ay gumagana tulad ng nararapat. Pagkatapos buksan ang program na ibinigay sa ilalim ng pahinang ito at ilunsad ito gamit ang anumang python IDE. Kung ang mga kredensyal ay naipasok nang tama, makikita mo ang sumusunod na screen. Alin ang nagpapakita ng live na feed ng camera na may dalawang mga pindutan sa ibaba.
Dahil ang screen ay may isang TFT touch screen, maaari mo lamang pindutin ang mga "nakaraang" at "susunod" na mga pindutan upang lumipat sa susunod na camera. Ang programa ay nakasulat sa loop sa pagitan ng unang apat na camera, madali mong mababago ito kung mayroong higit sa 4 na mga camera na nakakonekta sa iyong DVR.
Ang kumpletong pagtatrabaho ng proyektong ito ay matatagpuan sa video na naka-link sa ibaba. Inaasahan kong nasiyahan ka sa tutorial at natutunan ang isang bagay na kapaki-pakinabang kung mayroon kang anumang mga katanungan, iwanan ang mga ito sa seksyon ng komento o maaari mo ring gamitin ang aming mga forum upang mai-post ang iyong iba pang mga quires. Gayundin, nagpaplano akong magdagdag ng detection ng paggalaw at tampok sa pag-save ng video sa setup na ito, kaya't manatiling nakasubaybay din para doon.