Найти тему
Станислав

Ч. 2. Создал домашнюю систему видеонаблюдения с распознаванием номеров

Оффтоп. Изучаю новую для себя площадку, решил для теста перевыпустить несколько своих старых статей.

Всем привет!
INTRO
Это вторая часть статьи о том, когда It-шнику становится любопытно. Как я решил при помощи простой ip-камеры создать сервис регистрации проезжающих автомобилей с
блек-джеком и шлю… распознаванием номера.

- Первая часть

Часть пятая. Поиск оборудования. Форм-фактор.
По предварительным испытаниям стало совершенно точно понятно, текущая ip-камера не подходит и необходимо что-то лучше.
Т.к у меня совершенно нет понимания, что происходит на рынке видеонаблюдения, я начал читать какие-есть типы камер и чем они отличаются.
Для начала расскажу вам какие типы камер бывают. Разделить можно на два основных раздела, это IP и Аналоговые камеры. Для себя я выбрал первый вариант по следующим причинам:
• Простота установки. Не требует дополнительного оборудования
• Настройки осуществляются в самой камере
• Возможность обработки видеопотока непосредственно на камере
Следующий момент — это форм-фактор. Не сказать, что для меня он играет важную роль, но мне бы хотелось иметь возможность установить камеру на улицу и иметь возможность легко выставлять кадр.

Корпусные камеры.
Пожалуй, самый классический форм-фактор — это «корпусные камеры». Это камеры, которые мы чаще всего представляем в своей голове. Пример на рисунке 1.

Купольные камеры
Думаю, каждый из нас встречал такие камеры в банках, торговых центрах и развлекательных комплексах.
Основной особенностью такого устройства корпуса является, что в случае вандальных действий будет сложнее «открутить голову», плюс не так просто в отличие от предыдущего типа определить, куда именно смотрит камера, например, чтобы выявить мертвые зоны. Пример на рисунке 2.

Купольная PTZ-камера.
Когда смотрел различные обзоры, часто встречал слово PTZ и не понимал, что оно означает. Рассказываю – это полный аналог купольной камеры, только поворотный механизм объектива управляется удаленно. Пример на рисунке 2.

Поворотная PTZ-камера
Форм-фактор здесь может быть различным, но главная функция — это удаленное управление поворотом камеры. Пример на рисунке 3.

Итак, для себя решил, мне подойдет классическая корпусная камера.

Часть шестая. Поиск оборудования. Функционал
Одной из основных задач моего проекта – обработка информации с камеры.
Первоочередно я искал камеры с поддержкой RTSP потока. Для начала я понял, что выбирать среди лидеров рынка оборудования видеонаблюдения я не буду, как бы странно это не звучало. Цены на оборудование бренда hikvision и прочих сильно противоречат одному из требований, оговоренных мною ранее – дешевизна решения. Стал искать среди популярных китайский брендов.
Составил для себя ТОП:
• Gadinan
• BOAVISION
• GCraftsman
• Reolink
Когда начал знакомиться с решениями данных производителей – был приятно удивлен, адекватные для домашнего сегмента цены и неплохие технические характеристики на бумаге. Но все мы с вами знаем о качестве китайского ПО – классные функции на бумаге легко разбиваются о бесконечные глюки и зависания)
Сравнивая различные модели, прочитав множество обзоров и отзывов на работу камер, я определил для себя бренд reolink. Меня очень привлек следующий функционал:
• Распознавание человека
• Распознавание автотранспорта
Возможность отправки уведомлений:
• Загрузка на FTP
• Отправка на email
По итогу я заказал себе камеру RLC-811A (на момент покупки цена 5900руб.)
Основные характеристики:
• POE
• 8MP
• ИК – подсветка
• Светодиодная подсветка
• Слот для SD-карты
• Пятикратный оптический зум
Камера в пути, тем временем продолжаю остальную подготовку.

Часть седьмая. Логика системы.
Теперь вводные немного изменились. Моя новая камера может самостоятельно определять автомобиль в кадре и отправлять уведомление на почту или FTP. Это снимает с меня необходимость в реальном времени самостоятельно обрабатывать видеопоток, теперь мне нужно обрабатывать входящие алерты (оповещения), которые мне отправит камера.
Тогда этапы взаимодействия в системе должны быть следующими:
1. Камера отправляет алерты на сервер(ftp) или почту
2. Моя система принимает входящие данные
3. Данные обрабатываются
Здесь стоит вспомнить еще об одном требовании, которое я для себя выставил – поддержка нескольких пользователей.
Значит необходимо продумать канал для передачи уведомлений. Я решил, у каждого пользователя должны быть свои собственные реквизиты, будь это директория и пользователь ftp или почтовый ящик для отправки.
Вариант с FTP я посчитал недостаточно безопасным. Email подходит намного лучше т.к позволяет гибко управлять настройками почтового ящика и обработкой писем.
У каждого пользователя может быть свой почтовый ящик, у кого-то
mail.ru, кто-то пользуется gmail, yandex .и.т.д – при работе с каждым из этих провайдеров можно столкнутся с различными проблемами. Например, gmail с недавних пор вообще запретил подключать свою почту к различным умным устройствам и сторонним приложениям.
Придется создать свой почтовый сервер. При регистрации нового пользователя в системе ему должен быть автоматически создан почтовый ящик и предоставлены подробные настройки для камеры. Пользователь вводит данные настройки в камеру и теперь все уведомления отправляютcя через мой почтовый сервис, которым я могу гибко управлять.

Итак, новая схема теперь выглядит так:

-2

Пользователь авторизуется в системе, получает данные для настройки камеры, после правильного конфигурирования, камера будет отправлять уведомления с изображением автомобиля на мой почтовый сервер.
Веб-сервер проверяет все входящие сообщения, разбирает их по пользователям в базу данных. Далее пользователь с помощью браузера получает доступ ко всем событиям что были переданы камерой.

Часть восьмая. Установка камеры.
Пришла долгожданная посылка! После домашней мини-камеры от xiaomi новая кажется гигантом.

-3

Изначально я планировал питать камеру через PoE…

Проблема первая. Из коробки камера не запустилась. Как оказалось, мой роутер Микротик подает слабый вольтаж на PoE и необходимо сменить блок питания роутера. Т.к час был поздний и запустить камеру хотелось очень сильно, решил запитать камеру по отдельной выделенной линии питания, к счастью, в коробке с проводами( у всех же такая есть?) нашел подходящий блок питания на 12v.
Вставил витую пару, подключил питание и через пару секунд камера успешно запустилась. Фирменные приложения в телефоне и на компьютере уже были на готове, камера быстро нашлась в сети, и я успешно подключился.

Проблема вторая.
Камеру хотел установить на балконе, но в связи с проблемами питания тянуть два кабеля до балкона мне не хотелось, а на самом балконе розеток нет. Покупать новый блок питания для PoE я пока тоже не собирался. В итоге решил попробовать установить камеру на кухне, розеток там достаточно, но теперь проблема с доступом в сеть, тянуть витую пару по всей квартире тоже не хотелось.
К счастью, у меня валялось несколько сетевых железок, достал малютку mikrotik hap ac2.

-4

Настроил микротик в режиме wifi-репитера и уже по витой паре от него раздал интернет на камеру. В итоге схема получилась следующей:

-5

Проверив подключение на столе, было уже не в терпеж, и я пошел заниматься её установкой.

-6

Проблема третья.
Первая моя мысль была – установить камеру внутри квартиры, перед окнами. Такая установка менее заметна с улицы и защищает камеру от погодных условий.
От этой идеи пришлось сразу отказаться, т.к днем камера еще может снимать, но в темное время суток когда автоматически включается ИК-подсветка, камера засвечивает саму себя отражением от окна.
Пример, как выглядит такая картинка с камеры:

-7

Белое пятно в верхнем левом углу изображения — это ик-светодиоды камеры. В итоге решено, камеру необходимо выводить на улицу.

Проблема четвертая.
При установке камеры, я понимал, скорее всего придется ещё много раз менять её положение и соответственно создавать крепеж «на века» пока не имеет смысл. Но задача крепко зафиксировать камеру на улице осталась.
Решил установить её на подоконник «вверх ногами», почему «вверх ногами»? Корпус предполагает, что такие камеры устанавливаются крепежом сверху или вертикально на стену, а в моем случае крепеж будет снизу.

-8

При такой установке камеру невозможно наклонить вниз и снимать она будет под углом 90 градусов, мне это, конечно, не подходит т.к необходимо снимать дорогу внизу. Что ж… Я создал проблему и героически её решу!
Сделал из металлического профиля уголок, к которому на крепеж присоединил камеру. Схематично выглядит так.

-9

Что за синие прямоугольники? Хороший вопрос))) т.к сверлить подоконник очень не хотелось, я воспользовался небольшими неодимовыми магнитами, держат они очень крепко, сложно снять уголок двумя руками. Магниты не находятся в близости к камере или проводам, так что каких-либо помех или проблем замечено не было.

-10

Проблема пятая. Оборудование установлено, вроде работает. Проверяю качество картинки днем, с помощью зума – отлично! Номера прекрасно читаются

-11

Но… наступает ночь и что я вижу – а ничего! Точнее видно все, кроме номеров. Ик-подсветка сделана у камеры на совесть и засвечивает номера превращая их в сплошной белый прямоугольник.

-12

К такому, признаюсь, я совершено не был готов, идей не было. Пошел гуглить интернеты, основные советы – изменить источник ик-подсветки чтобы угол отражения был другим и не лупил прямиком обратно в объектив.
Я уже начал было собирать компоненты в голове для создания небольшого ик-фонаря, но еще подумав над возможными вариантами, решил попробовать снизить мощность этой подсветки. В очередной раз, в прямом смысле отодрав (помните про неодимовые магниты 😊 ) камеру с подоконника, изучил конструкцию подсветки. Она состоит из четырех отдельных ик-светодиодов, что ж, прекрасно! Берем непрозрачный скотч и просто заклеиваем три из них. Ставим все обратно, проверяем.

-13

Готово! И так с камерой на текущем этапе разобрались (на самом деле есть еще одна серьёзная проблема, но о ней позже), теперь возвращаемся за компьютерный стол.

-14

Часть седьмая. Разработка
Ниже будут скриншоты бета-версии сайта. На них возможны опечатки, неточности и на текущий момент некоторые элементы могут быть изменены и не соответствовать изображению.
Практически все этапы( тестирование, распознавание, подбор оборудования, продумывание логики и.т.д) я вел параллельно и соответственно понемногу писал сам сервис.
Что и как писать о разработке, не сильно уходя в программирование достаточно сложно. Я постараюсь писать так, чтобы обычный читатель понимал, о чем речь.
Первое – определить, где будет находиться сервер. Все тесты я проводил на своем домашнем сервере, который выступает у меня в роли файлохранилища и держит несколько сервисов. Но по ходу развития идеи понял, что возможно не я один буду пользоваться сервисом и решил отдалить его от домашней инфраструктуры и чувствительной для меня информации.
Особых требований к хостингу нет, подойдет практически любой. Я остановился на одном из популярных Российских хостеров.
Сразу оформил заказ на два сервера, один непосредственно для web-сервиса, второй для почтового сервера.
Ранее собранные в голове образы интерфейса системы пришлось обрисовать, получился такой шаблон:

-15

Шутка, но она не далека от правды.

-16

Примерно так выглядел мой первый эскиз дизайна. На главную страницу сайта панели я разметил текущую сводку по последним распознанным автомобилям, статистику по алертам и несколько общих цифр.

-17

Следующий раздел — это непосредственно алерты, то есть оповещения, которые пришли с камеры. Страница отображает весь список доступных алертов, гос.номер ( если распознан ) и возможность открыть конкретный алерт и подробно ознакомиться с ним.

-18

Еще один важный раздел сайта – Автомобили. Стоит понимать, один автомобиль может несколько раз попадать в поле зрения камеры, таким образом необходимо разделять сущности «алерт» и «автомобиль».
Один автомобиль может принадлежать к нескольким алертам. И если мы хотим увидеть историю автомобиля, для этого нам необходимо отталкиваться именно от автомобиля.

-19

Страница настроек — это первое, куда должен отправиться пользователь после регистрации. Как я писал ранее, для каждого пользователя будет генерироваться персональный почтовый ящик.
Реквизиты доступа к ящику и остальные настройки, которые необходимо указать в камере – будут находиться на этой странице.

-20

Также вы можете заметить поле «Часовой пояс», зачем? Т.к я писал систему с возможностью что ей будут пользоваться несколько человек необходимо понимать, что у каждого будет свой часовой пояс. И вся информация в системе должна отображаться с учетом часового пояса конечного пользователя.

Финишная прямая.
Статья получилась большой, но аккуратно разбить её я не смог. Надеюсь вам было интересно наблюдать за моим небольшим домашним проектом.
Выше я писал, что с камерой есть еще одна серьезная проблема. Я вам её покажу:

-21

Смазанная картинка если машина по двору едет достаточно быстро, к сожалению, такие водители есть – заезжают с улицы во двор и даже не сбавляют скорость.
Понятно, определить номер на таком изображении невозможно, проблема в камере. Но т.к это хобби-проект и моей задачей было создать систему – считаю, что с ней я справился. Заниматься фанатизмом, покупать дорогое оборудование не собираюсь. Надеюсь, данные из этой системы мне никогда не пригодятся, в первую очередь я повысил свои навыки в разработке, размял мозг, немного изучил рынок видеонаблюдения и интересно провел время.