суббота, 8 февраля 2020 г.

Очень субъективно о HIKVISION iDS-TCM203-A


    Так случилось, что меня попросили интегрировать распознавание автомобильных номеров камерой HIKVISION iDS-TCM203-A в другую программу. В двух словах - потребовалась библиотечка C#/.NET для удобства работы с устройством. Что из этого получилось - попробую изложить без эмоций, опираясь на факты. Если я в чем то не прав - подскажите в комментариях.
     Камера пришла ко мне без какой-либо сопроводительной документации, что меня не испугало -ведь есть Интернет. Вот тут то и крылась ловушка. Нагугленная информация оказалась очень противоречивой и не вполне соответствующей тому, что я увидел в устройстве.
     
     После нескольких итераций понял, что надо делать:
  •  Установил SD карту в камеру, подал питание (24В) и подключил камеру к локальной сети для соединения с компьютером (OC Windows 10).
  •  Установил программу SADPTool_3.0.2.4. После запуска этой программы и нажатия кнопки Refresh был произведен поиск камеры по сети и определен IP адрес камеры (далее IPcamera).
  •  Запустил Internet Explorer (работа с другими браузерами возможна, но имеет особенности использования компонента ITCPWebComponents). Открыл страницу http://IPcameraВвел логин и пароль.
  •  Загрузил компонент ITCPWebComponents. Закрыл браузер и установил ITCPWebComponents. Запустил браузер и  открыл страницу http://IPcamera. Авторизовался.
  •  Установил автомобильный номер в поле зрения камеры на расстоянии около 3 м. Открыл окно Live View->Live Traffic Statistics. Нажал кнопку Capture

       Unknown - там где ожидал номер.  

Поменял Smart Mode на Licence Plate Recognation System.

        Unknown - там где ожидал номер. 

Запрос: Техподдержка, помогите!!!
Ответ: Ну у вас, наверно, не установлены региональные настройки номера....
Запрос: А как их установить?
Ответ: У вас должна быть менюшка - и там надо выбрать Россию, по умолчанию там Европа.
Запрос: Да, я вижу такое меню на Ютубе и мануалах на HIKVISION LPR камеры. Но у меня нет такого меню. 
Ответ: Да, мы задавали этот вопрос китайцам, но они что-то молчат... Попробуйте обновить прошивку.
Запрос: Но номер прошивки(4.2.2), который я вижу в ютубовых роликах и у себя совпадает - а пункты меню не совпадают!
Ответ: Попробуйте обновить прошивку.
Запрос: Я обновил прошивку - вместо версии 4.2.2 стала 4.2.5 - но в меню ничего не изменилось - по прежнему настройки LPR не доступны. Что делать?
Ответ: ....
Запрос:  Что делать?
Ответ: ....

Читаем описание того, что ещё не доступно - кроме недоступного выбора  страны:

"Select License Plate Type. Small-Size Plate Recognition and Large-Size Plate Recognition are selectable. Small-Size Plate Recognition: Select it when the character height of the license plate is in the range of 20 to 30 pixels. Large-Size Plate Recognition: Select it when the character height of the
license plate is in the range of 30 to 40 pixels."

А сколько у меня? Высота символа - 100 пикселов (Capture Resolution = 1920x1080).

Двигаем камеру от номера на расстояние 7 метров.

Попал! Открыл окно Live View->Live Traffic Statistics. Нажал кнопку Capture. Есть номер в текстовом виде.

А можно ли изменением настроек разрешения Encoding and Storage->Image Encoding->Capture Resolution получить возможность для изменения(уменьшения) расстояния, на котором производится распознавание? Нельзя.

А влияют ли настройки видео Encoding and Storage->Video Encoding на распознавание? Не влияют.

А меняет ли что то настройка ROI(Region of Interest)? Не влияет.

Вешаем камеру на дороге с пешеходами, велосипедистами и автомобилями по инструкции. 
  • Нет событий распознавания номеров.
  • Нет событий распознавания движущихся объектов без номеров.
  • Подключение через SDK сообщает о периодических изменениях списка белых/черных списков номеров - хотя изменений никто не делает.
  • Подключение по ISAPI работает, но команды назначенные по писанию для LPR - возвращают Forbidden.
Возвращаемся к ручному запуску распознавания для неподвижного номера. Посмотрим - что там в TCP трафике? Видим HTTP PUT запрос "/ISAPI/ITC/manualCap". Смотрим документацию по ISAPI - описания такого запроса нет. По нему возвращается много чего (видимо изображения - пока не разбирался). Но главное - в фиксированной позиции в дампе присутствует строка номера - что и надо. Замешиваем запрос с Digest-аутентификацией сначала на postman, а потом на С#.

Итого: 
Чтобы распознавать LP надо иметь неподвижный номер на расстоянии >7 метров и "ручной" захват. Посмотрим - как это будет соответствовать требованиям по размещению камеры и основной программе.