- Підготовка відеореєстратора до потокового передавання RTSP
- Підготовка вашого Raspberry Pi
- Встановлення OpenCV та інших бібліотек на Raspberry Pi
- Програмування Raspberry Pi для потокового передавання відео RTSP від CCTV
- Тестування програми перегляду CCTV Raspberry Pi
Сьогодні на більшості робочих та комерційних будівель встановлена система відеоспостереження для спостереження за діяльністю. Але часто зацікавленим органам влади чи особам безпеки важко постійно контролювати прямий ефір усіх камер, щоб шукати підозрілу діяльність. Завдяки швидкому прогресу комп’ютерного зору та машинного навчання, настав час зробити наші системи відеоспостереження розумнішими. У цій статті ми обговоримо, як отримати відеопоток із існуючого відеореєстратора (наприклад, Hikvision DVR) через потокове передавання RTSP за допомогою Raspberry pi за допомогою Python та OpenCV. Отримавши це, ми зможемо використати потужність OpenCV на цих відеопотоках для виявлення для конкретного об’єкта, зчитування номерного знака транспортного засобу, розпізнавання обличчя та чого іншого!
Для цього підручника я буду використовувати 4-канальний відеореєстратор відеоспостереження Hikvision, який уже встановлений у будівлі. Ми будемо передавати всі 4 екрани камери на Raspberry і відображатимемо їх на 5-дюймовому сенсорному дисплеї, де користувач зможе переходити між кожним каналом за необхідності. Я знаю це не так вже й багато, враховуючи потужність OpenCV, і я маю плани розширити його за допомогою виявлення руху, попередження про відеосигнали, відстеження людей тощо, але залишимо все це для іншого підручника.
Підготовка відеореєстратора до потокового передавання RTSP
Перш ніж ми заглибимося в апаратне забезпечення Raspberry Pi та код python, важливо перевірити, чи підтримує відеореєстратор RTSP та як отримати до нього доступ. Я провів більшу частину свого часу застрягши тут, тому що процедура, схоже, відрізняється для кожного типу відеореєстратора, і вам потрібно зробити і багато хітів і спробувати. Але як тільки ви це зрозумієте, це щоразу спрацьовує як шарм.
Перш за все, переконайтеся, що ви знаєте ім’я користувача та пароль своєї системи відеореєстратора, і вона під’єднана до Інтернету. Також у цьому підручнику я буду передавати RTSP лише з локальної мережі, якщо у вас статична IP-адреса, ви можете зробити переадресацію портів і дотримуватися того ж для інших мереж. Що стосується цього підручника, ми будемо робити все, що є в локальній мережі.
Крок 1: Знайдіть IP-адресу вашого відеореєстратора. Після підключення відеореєстратора до Інтернету йому буде призначена власна IP-адреса. Ви можете знайти цю IP-адресу на сторінці конфігурації маршрутизатора або на самому екрані відеореєстратора (за умови, що монітор підключений до відеореєстратора). IP-адреса мого маршрутизатора була http://192.168.11.110/ (змінено з міркувань безпеки)
Крок 2: Відкрийте будь-який веб-браузер на ваш вибір, введіть IP-адресу та натисніть Enter. Ви потрапите на сторінку входу в систему DVR. Де потрібно ввести ім’я користувача (моє змінено) та пароль для вашого відеореєстратора. Ім'я користувача за замовчуванням буде адміністратором, але пароль ви повинні знати. Моє вікно входу для відеореєстратора показано нижче, вигляд може відрізнятися.
Крок 3: Після успішного входу шукайте номер порту RTSP на своєму відеореєстраторі. Найчастіше значення за замовчуванням буде 554, але воно може змінитися. Поки ви тут, пограйте з налаштуваннями конфігурації, щоб перевірити, чи є можливість увімкнути RTSP, якщо ні, ви можете пропустити його. Вам доведеться провести тут деякий час, оскільки процедура відрізняється залежно від відеореєстратора.
Крок 4: Підготуйте посилання RTSP, основне посилання RTSP буде у наступному форматі -
rtsp: //
Знову ж таки, це залежить від типу відеореєстратора, ви можете за допомогою Google знайти той, який підійде саме вам. Той, який працював, мав формат нижче, ви також можете спробувати з цим -
rtsp: //
Де
rtsp: // admin: [email protected]: 554 / Потокове / Канали / 202 /
Крок 5: Відтворіть потік на VLC, щоб переконатися, що з’єднання RTSP працює. Встановіть VLC на комп’ютері, підключеному до тієї ж мережі, що і відеореєстратор, запустіть його та натисніть Ctrl + N для потокової передачі в мережі. Введіть URL-адресу, як показано нижче, і натисніть гаразд.
Якщо посилання RTSP працює належним чином, ви повинні побачити пряму трансляцію вашого відеоспостереження на програвачі VLC, як показано нижче. Якщо він видає помилку, тоді вам потрібно з’ясувати правильне посилання.
Після цього нам більше не потрібно говорити про те, що наш відеореєстратор дозволяє продовжувати роботу з нашим Raspberry pi.
Підготовка вашого Raspberry Pi
Далі нам потрібно налаштувати наш малиновий пі з 5-дюймовим дисплеєм. Я не збираюся вдаватися в подробиці цього, оскільки ми це вже багато разів висвітлювали. Ви можете прочитати наступні статті для керівництва -
- Початок роботи з Raspberry Pi
- Взаємодія 5-дюймового дисплея з Raspberry Pi
Ми використовуємо Raspberry Pi 3 B + із запущеною ОС Debian Buster. Також може бути гарною ідеєю використовувати 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
Наступна частина програми вимагає певного редагування. Ви повинні ввести ім’я користувача та пароль свого відеореєстратора. Для 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 ми маємо програму для зчитування кадру з пристрою захоплення та перетворення його на весь екран. Вікно відображення в нашій програмі буде називатися екраном.
success, current_cam = 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 для двох кнопок, якщо натиснути кнопку, буде виконано відповідний оператор if .
if (cvui.button (Full_frame, width - 100, height - 40, "Next") and 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. КЛІК)): print ("Попередня кнопка натиснута") cvui.init ('екран') 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
Тестування програми перегляду CCTV Raspberry Pi
Тестування коду відбувається досить прямо, увімкніть pi та запустіть код python, наведений внизу цієї сторінки. Переконайтеся, що ви ввели правильні дані для роботи посилання RTSP. Якщо ви хочете бути в безпеці, ви також можете спробувати скористатися програвачем VLC на Pi, який попередньо встановлений в ОС Buster.
Якщо це працює на VLC, то ми можемо бути впевнені, що наш pi підключений до однієї мережі і посилання RTSP працює як слід. Потім відкрийте програму, наведену внизу цієї сторінки, і запустіть її за допомогою будь-якої IDE python. Якщо облікові дані введені правильно, ви побачите наступний екран. На якому показано живу стрічку камери з двома кнопками внизу.
Оскільки на екрані є сенсорний TFT-екран, ви можете просто торкнутися кнопок «попередній» та «наступний», щоб перейти до наступної камери. Програма написана для циклу між першими чотирма камерами, ви можете легко її змінити, якщо до вашого відеореєстратора підключено більше 4 камер.
Повну роботу цього проекту можна знайти у відеозаписі нижче. Сподіваємось, вам сподобався підручник і ви дізнались щось корисне, якщо у вас виникли запитання, залиште їх у розділі коментарів або ви також можете скористатися нашими форумами, щоб опублікувати інші свої запити. Крім того, я планую додати до цього налаштування функцію виявлення руху та збереження відео, тому слідкуйте і за цим.