+7-960-0655211 (Билайн)
+7-987-4207734 (МТС)
интернет-магазин
доставка по России и СНГ
работаем с 2010 года

Система видеонаблюдения с функцией распознавания движения на Raspberry Pi

ГлавнаяИнформацияСтатьи

Система видеонаблюдения с функцией распознавания движения на Raspberry Pi

Используя Raspberry Pi и веб-камеру, в этом проекте мы сделаем очень дешевую систему видеонаблюдения, которая имеет множество настраиваемых параметров и функцию определения движений.

В данном проекте на Raspberry Pi установлена ОС Raspbian. Для создания системы видеонаблюдения используется Motion. Motion - это бесплатное программное обеспечение с открытым исходным кодом и широкими возможностями настройки для создания систем видеонаблюдения. Можно настроить видеонаблюдение для системы безопасности, наблюдением за птицами или домашними животными, создавать таймлапс видео и многое другое. Основные возможности Motion:

  • Запись видео или фотографий при обнаружении активности или через регулярные промежутки времени;
  • Запись с нескольких IP-камер;
  • Просмотр прямой трансляции с камер;
  • Запуск скриптов при обнаружении активности;
  • Регистрация активности в базе данных;
  • Полностью настраиваемые маски для задания областей на изображении, в которых определяется движение или для которых нужно обеспечить режим конфиденциальности;
  • Полная поддержка tls (https) с аутентификацией для веб-доступа и видеопотока.

В качестве источника видеопотока могут выступать сетевые камеры (через RTSP, RTMP и HTTP), камеры Raspberry Pi, веб-камеры V4L2, карты видео захвата и видеофайлы.

Установка и настройка Motion

Прежде всего убедитесь, что Raspberry Pi подключена к интернету через локальную сеть или Wi-Fi.
Запустите консоль и обновите систему выполнив команду:

sudo apt-get update

Установка Motion:

sudo apt-get install motion

Что бы демон Motion всегда работал, нужно отредактировать файл /etc/default/motion и прописать в нём start_motion_deamon=yes

sudo nano /etc/default/motion


Для сохранения файла нажмите "CTRL + X", затем «Y» и Enter.
Теперь нужно установить права доступа для каталога (/var/lib/motion/), в котором Motion сохраняет все видеозаписи и файлы изображений. Motion нужно установить владельцем этого каталога. Для этого выполним следующую команду:

sudo chown motion:motion /var/lib/motion/

Если данные права не будут установлены, Вы получите ошибку, когда проверите статус сервиса Motion с помощью команды:

sudo service motion status




По умолчанию Motion настроен на потоковую передачу только в localhost, т.е. видеопоток будет доступен на самой Raspberry Pi, но не будет доступен по сети. Если нужно, в файле конфигурации (/etc/motion/motion.conf) это можно перенастроить, задав "off" для параметра stream_localhost. Команда для редактирования файла настроек:

sudo nano /etc/motion/motion.conf<



Параметром stream_port  задаётся порт для потокового видео:

# The mini-http server listens to this port for requests (default: 0 = disabled)
stream_port 8081

Для сохранения файла нажмите "CTRL + X", затем «Y» и Enter.
Если в файле настроек производились изменения а Motion уже запущен, его нужно перезапустить командой:

sudo service motion restart

Первоначальная настройка закончена. Запускаем Motion с помощью команды:

sudo /etc/init.d/motion start

В браузере откройте страницу с адресом Вашей Raspberry Pi и портом 8081. Например, если у Raspberry адрес 192.168.1.103, то в браузере вводиться:
192.168.1.103:8081
Если настроена передача видеопотока только для localhost, в браузере на Raspberry PI введите:
localhost:8081
При открытии страницы в браузере Вы увидите прямую трансляцию с веб-камеры, выглядит это примерно так:



Используемая в данном случае камера - это недорогая Quantum QHM500LM, у которой картинка немного размыта. Если Вам нужна картинка получше, используйте более качественную камеру.
Если в настройках отключить трансляцию только в localhost, видео можно будет просматривать с других компьютеров, смартфонов, планшетов и т.д. Для примера это снимок с мобильного телефона:



Вы всегда можете запустить, остановить, перезапустить и получить статус сервиса Motion, для этого используются следующие четыре команды:

sudo /etc/init.d/motion start
sudo /etc/init.d/motion stop
sudo service motion restart
sudo service motion status

Иногда для устранения неполадок можно перезагрузить Raspberry Pi, используя команду:

sudo reboot

Примечание: у Raspberry Pi 3 встроенный Wi-Fi. Если у Вас модель ниже версии 3, Вам может понадобиться usb Wi-Fi для беспроводного подключения к роутеру.
Когда всё заработало, можно переходить к дальнейшей настройке. В файле конфигурации все настройки очень хорошо прокомментированы, с указанием их значений по умолчанию.
Помимо получения прямой трансляции, Motion записывает и сохраняет видеофайлы всякий раз, когда обнаруживает движение. Вы можете настроить частоту кадров, качество и разрешение (ширина и высота) изображения, изменив следующие параметры:

# Image width (pixels). Valid range: Camera dependent, default: 352
width 640
# Image height (pixels). Valid range: Camera dependent, default: 288
height 480
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 50
stream_quality 90

Для видео в реальном времени можно установить высокую частоту кадров, но у вашей сети должна быть достаточная пропускная способность для этого.
Как уже было упомянуто, при обнаружении движения начинается запись видео. Следующими параметрами настраивается, сколько изображений сохранять до и после обнаружения движения:

# Specifies the number of pre-captured (buffered) pictures from before motion
# was detected that will be output at motion detection.
# Recommended range: 0 to 5 (default: 0)
pre_capture 0
# Number of frames to capture after motion is no longer detected (default: 0)
post_capture 0

Очень важный параметр - это picture_output, ему можно устанавливать значения "on", "off", "first" или "best":
  • "off" - отключает запись изображения, это значение по умолчанию;
  • "on" - обычное выделение;
  • "first" - сохраняет только первое изображение, в котором замечено движение;
  • "best" - сохраняет изображение с наиболее измененными пикселями. Требует немного больше ресурсов от процессора в сравнении с "first".
Motion по умолчанию делает слишком много снимков, когда обнаруживает движение, и Вы получите очень много файлов при каждом даже небольшом движении. Поэтому было бы хорошо или отключить (off) или установить в "best".

output_pictures best

Для сохранения снимков через определенные промежутки времени, настройте параметр:

# Make automated snapshot every N seconds (default: 0 = disabled)
snapshot_interval 0



Параметр target_dir  задаёт путь, по которому сохраняются снимки и видео:

# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /var/lib/motion

Не забудьте установить права доступа, установив Motion в качестве владельца этого каталога, как объяснялось ранее.
По умолчанию Motion записывает видео непрерывно. Вместо одного большого файла можно разбивать видео на несколько частей определённой длительности. Максимальная продолжительность (в секундах) задаётся следующим параметром:

# Maximum length in seconds of a movie
# When value is exceeded a new movie file is created. (Default: 0 = infinite)
max_movie_time 30

Также можно настроить, какое количество пикселей или кадров должны измениться для срабатывания триггера обнаружения движения:

# Threshold for number of changed pixels in an image that
# triggers motion detection (default: 1500)
threshold 1500
# Picture frames must contain motion at least the specified number of frames
# in a row before they are detected as true motion. At the default of 1, all
# motion is detected. Valid range: 1 to thousands, recommended 1-5
minimum_motion_frames 5

По умолчанию Motions сохраняет журналы событий в «syslog», местоположение можно перенастроить следующим параметром:

# Use a file to save logs messages, if not defined stderr and syslog is used. (default: not defined)
logfile /tmp/motion.log

Не забудьте сохранить и перезапустить сервис Motion после изменения любых настроек. Чтобы сохранить файл motion.conf, нажмите клавиши "CTRL + X", затем "Y", а затем Enter.
Рассмотрена только очень небольшая часть основных настроек, ещё можно настраивать яркость, контрастность, битрейт, триггеры, аутентификацию по паролю и много других параметров. Если интересно, изучайте файл конфигурации и экспериментируйте с настройками.


Автор: Jayant
Перевод и адаптация: RobotoTehnika.ru