TL;DR — если вы хотите использовать обнаружение объектов с ZoneMinder, то:

Шаг 1. Установите сервер событий, сначала запустите его, прочитав это

Шаг 2. Настройте обнаружение объектов, прочитав это

Я только что выпустил версию 1.5 сервера zmeventnotification, который позволяет вам запускать пользовательский сценарий ловушки, который может решить, хотите ли вы отправлять сигналы тревоги или нет.

Вы знаете, все те времена, когда вы не хотите, чтобы качающаяся тень дерева пинговала ваш телефон? Было бы неплохо, если бы вы могли получать только те будильники, которые вам небезразличны? Ну, это то, что делает «крюк». Он позволяет вам вызывать свой собственный сценарий, и вы можете написать логику обработки сигнала тревоги. Если ваш скрипт возвращает 0, сигнал тревоги будет отправлен. Если он вернет какое-либо другое значение, сервер уведомлений не отправит сигнал тревоги (конечно, ZM все равно будет записывать).

Подождите. Вот и все? Это все равно, что сказать: «Я создал интерфейс, который потенциально может обнаруживать, скажем, людей, но вы придумали, как обнаруживать людей в режиме реального времени»

Да отстой. Так что я помог вам немного дальше. Я добавил два примерных сценария ловушки, которые используют openCV для обнаружения людей и/или объектов в новом событии.

Есть два скрипта обнаружения:

detect_hog.py: это не очень точно, но разумно. И это очень быстро, что делает его работоспособным с сервером уведомлений, потому что он также работает в полуреальном времени.

detect_yolo.py: использует YOLOv3. Довольно точный, обнаруживает несколько объектов. Помедленнее.

На 4-ядерном компьютере с процессором Intel Xeon 3,16 ГГц без графического процессора (т. е. только с ЦП) для обнаружения_hog требуется 0,2 с, а для обнаружения_йоло — 2 секунды. Учитывая, что он запускается только тогда, когда ZM инициирует движение, в настоящее время я использую подход yolo на своем сервере.

Вам нужно настроить оба и установить все пакеты Python. В основном, openCV и некоторые другие. Пожалуйста, разберитесь. Пожалуйста, прочтите комментарии в файлах script.

Но это дает вам хорошую идею — я уже использую его, и он очень быстрый (менее 0,2 секунды на машине без графического процессора). Пожалуйста, прочитайте комментарии, чтобы понять, как его использовать/настроить.

Несколько заметок:

  1. Это дает вам общий крючок — обнаружение человека — это только один пример того, как вы можете его использовать.
  2. Существует открытый запрос функции для ZM, чтобы включить обнаружение человека (с использованием аналогичного алгоритма обнаружения HOG на основе OpenCV) непосредственно в ZM. Когда это сделано, вам, очевидно, не нужно использовать хук для обнаружения объектов. Пожалуйста, добавьте к награде, чтобы увидеть ее в ZM раньше, чем позже или никогда.

Итак, вот пример полезного уведомления, которое пришло на мой телефон: