- Подготовка на DVR за RTSP Streaming
- Подготовка на вашия Raspberry Pi
- Инсталиране на OpenCV и други библиотеки на Raspberry Pi
- Програмиране на Raspberry Pi за стрийминг на RTSP видео от CCTV
- Тестване на Raspberry Pi CCTV Viewer
Днес на повечето работни и търговски сгради е инсталирана система за видеонаблюдение за наблюдение на дейностите. Но често пъти е трудно за засегнатите власти или персонали от сигурността да наблюдават непрекъснато предаването на живо на всички камери, за да търсят подозрителна дейност. С напредването на компютърното зрение и машинното обучение на бърза фаза е време да направим нашите системи за видеонаблюдение по-интелигентни. В тази статия ще обсъдим как да получите видео емисията от съществуващ DVR (като Hikvision DVR) чрез RTSP стрийминг с Raspberry pi, използвайки Python и OpenCV. След като получим това, ще можем да използваме силата на OpenCV на тези видео емисии, за да открием за определен обект, да прочетем регистрационния номер на превозното средство, разпознаването на лица и какво ли още не!
Заради този урок ще използвам Hikvision 4-канален видеорегистратор, който вече е инсталиран в сградата. Ще предаваме всички 4 екрана на камерата към Raspberry и ще го показваме на 5-инчов сензорен дисплей, където потребителят може да превключва между всеки канал според нуждите. Не знам това много, като се има предвид силата на OpenCV и имам планове да го мащабирам с откриване на движение, предупреждение за видео на bugler, проследяване на хора и т.н.
Подготовка на DVR за RTSP Streaming
Преди да се потопим в Raspberry Pi хардуера и кода на python, е важно да проверим дали DVR поддържа RTSP и как да го осъществим. По-голямата част от времето си прекарах тук, защото процедурата изглежда се различава за всеки тип DVR и трябва да направите и много удари и да опитате. Но след като разберете това, това работи като чар всеки път.
Първо, уверете се, че знаете потребителското име и паролата на вашата DVR система и тя е свързана с интернет. Също така в този урок ще предавам RTSP само от локална мрежа, ако имате статичен IP, можете да направите пренасочване на портове и да следвате същото за други мрежи. Но що се отнася до този урок, ще правим всичко вътре в локалната мрежа.
Стъпка 1: Намерете IP адреса на вашия DVR. След като DVR се свърже с интернет, ще му бъде назначен собствен IP адрес. Можете да намерите този IP адрес или от страницата за конфигуриране на маршрутизатора, или от самия екран на DVR (ако приемете, че имате монитор, свързан към DVR). IP адресът на моя рутер е http://192.168.11.110/ (променен от съображения за безопасност)
Стъпка 2: Отворете всеки уеб браузър по ваш избор и въведете IP адреса и натиснете Enter. Ще бъдете отведени до страницата за вход на DVR. Къде трябва да въведете потребителското име (моето е променено) и паролата за вашия DVR. Потребителското име по подразбиране ще бъде администратор, но паролата трябва да знаете. Екранът ми за вход за DVR е показан по-долу, вашият външен вид може да се различава.
Стъпка 3: След успешно влизане, потърсете номера на RTSP порта на вашия DVR, най-често стойността по подразбиране ще бъде 554, но може да се промени. Докато сте тук, играйте с настройките на конфигурацията, за да проверите дали има опция за активиране на RTSP, ако не можете да го пропуснете. Трябва да прекарате известно време тук, тъй като процедурата е различна в зависимост от DVR.
Стъпка 4: Подгответе вашата RTSP връзка, основната RTSP връзка ще бъде в следния формат -
rtsp: //
Отново зависи от вида на DVR, можете да използвате google, за да намерите този, който ще работи за вас. Този, за който е работил, е с формат по-долу, можете да опитате и с това-
rtsp: //
Където
rtsp: // admin: [email protected]: 554 / Поточно предаване / Канали / 202 /
Стъпка 5: Пуснете потока на VLC, за да сте сигурни, че вашата RTSP връзка работи. Инсталирайте VLC на компютър, който е свързан към същата мрежа като DVR, стартирайте го и натиснете Ctrl + N за мрежово поточно предаване. Въведете URL адреса, както е показано по-долу, и натиснете добре.
Ако връзката RTSP работи по начина, по който трябва, трябва да видите поток на живо от вашето видеонаблюдение на VLC плейъра, както е показано по-долу. Ако изведе грешка, трябва да разберете правилната връзка.
С това вече не е нужно да говорим за нашия DVR, за да продължим с нашата Raspberry pi.
Подготовка на вашия Raspberry Pi
След това трябва да настроим нашата Raspberry Pi с 5-инчовия дисплей. Няма да навлизам в детайлите на това, тъй като вече сме го разглеждали много пъти. Можете да прочетете следните статии за насоки-
- Първи стъпки с Raspberry Pi
- Взаимодействие на 5-инчов дисплей с Raspberry Pi
Използваме Raspberry Pi 3 B + с работеща в него Debian Buster OS. Също така може да е добра идея да използвате Pi 4, ако можете, а също и да добавите някои опции за охлаждане като радиатор или вентилатор, защото забелязах, че температурата достига почти 70 * C. Към момента не спазвах никаква процедура за охлаждане и настройката ми изглежда така-
Инсталиране на OpenCV и други библиотеки на Raspberry Pi
Следващата стъпка е да инсталирате OpenCV на Raspberry Pi. По-рано обсъждахме как да компилираме OpenCV на Raspberry pi.
- Инсталиране на OpenCV на Raspberry Pi
- Първи стъпки с OpenCV
Можете да следвате горната връзка и да компилирате OpenCV с помощта на Cmake или просто да го инсталирате с метод apt-get. Бих препоръчал по-късно, ако не се занимавате с много сериозно програмиране на OpenCV. Използвах следните команди за инсталиране на OpenCV.
sudo apt актуализация sudo apt инсталиране python3-opencv
В нашата програма ще използваме и библиотеката “cvui”, за да създадем основен потребителски интерфейс с два бутона, които ни позволяват да навигираме между четирите екрана. За да инсталирате cvui, следвайте командата по-долу.
Python3 pip инсталира cvui
С инсталираните двата пакета можем да влезем в основната програма. Уверете се, че и двата инсталирани пакета работят, като се опитвате да ги импортирате от командния терминал на Pi.
Програмиране на Raspberry Pi за стрийминг на RTSP видео от CCTV
Пълната програма за този проект може да бъде намерена в края на тази страница. Обяснението на същото е следното. Започваме програмата, като включваме необходимите заглавни файлове.
внос cv2 внос cvui
Следващата част на програмата изисква известно редактиране. Трябва да въведете потребителското име и паролата на вашия DVR. За 5-инчов дисплей, ширината и височината са съответно 800 и 480, така че сме въвели същото.
rtsp_username = "admin" rtsp_password = "aswinth347653" ширина = 800 височина = 480 cam_no = 1
Продължавайки, имаме функция, наречена създаване на камера, която ще се използва всеки път, когато сменим номера на камерата, който трябва да бъде видян.
def create_camera (channel): 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) # Идентификационен номер за ширина е 3 cap.set (4, 480) # Идентификационен номер за височина е 480 cap.set (10, 100) # Идентификационен номер за яркост е 10qq връщаща капачка
Вътре в основния цикъл while имаме нашата програма за четене на кадър от устройството за улавяне и преобразуването му на цял екран. Дисплеят в нашата програма ще бъде извикан като екран.
успех, текуща_камера = cam.read () dim = (ширина, височина) 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)
Последвано от това имаме кода за два бутона, които ще бъдат поставени на екрана. Командата cvui.button се използва за поставяне на бутона на необходимо място, а командата cvui.mouse се използва за откриване на щракване на мишката. Имаме две , ако отчети за два бутона, ако кликването, съответните ако изявление ще бъде изпълнена.
if (cvui.button (Full_frame, width - 100, height - 40, "Next") и cvui.mouse (cvui.CLICK)): print ("Натиснат следващ бутон") cvui.init ('screen') 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") и cvui.mouse (cvui. CLICK)): print ("Пресиран бутон натиснат") cvui.init ('screen') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Вътре в инструкцията if , въз основа на бутона, ние или увеличаваме, или намаляваме броя на cam_no и след това изтриваме съществуващата камера и създаваме нова камера, използвайки функцията, която обсъдихме по-горе. Също така имайте предвид, че cvui.init трябва да се обажда всеки път, за да опресни екрана на потребителския интерфейс.
Последната част на кода е да покаже кадъра като изход и за излизане от изходния екран при натискане на q. Просто изчакваме натискане на клавиш и ако ключът е „q“, ще унищожим всички прозорци.
cv2.imshow ('screen', Full_frame) if cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Тестване на Raspberry Pi CCTV Viewer
Тестването на кода е доста право напред, включете pi и стартирайте кода на python, даден в долната част на тази страница. Уверете се, че сте въвели правилните идентификационни данни, за да работи връзката RTSP. Ако искате да сте на сигурно място, можете също да опитате да използвате VLC плейъра на Pi, който е предварително инсталиран на buster OS.
Ако работи на VLC, тогава можем да сме сигурни, че нашият pi е свързан към същата мрежа и връзката RTSP работи както трябва. След това отворете програмата, дадена в долната част на тази страница, и я стартирайте, използвайки която и да е IDE на python. Ако идентификационните данни са въведени правилно, ще видите следния екран. Което показва захранването на камерата на живо с два бутона в долната част.
Тъй като екранът има TFT сензорен екран, можете просто да докоснете бутоните „предходен“ и „следващ“, за да преминете към следващата камера. Програмата е написана така, че да се върти между първите четири камери, можете лесно да я модифицирате, ако към вашия DVR са свързани повече от 4 камери.
Цялостната работа на този проект може да бъде намерена във видеото, свързано по-долу. Надявам се, че ви е харесал урокът и сте научили нещо полезно, ако имате някакви въпроси, оставете ги в раздела за коментари или можете също да използвате нашите форуми, за да публикувате вашите други запитвания. Също така планирам да добавя функция за откриване на движение и запис на видео към тази настройка, така че следете и за това.