Дополнительное задание на +1 балл


 e107    14 Dec 2017 : 02:38
 None    Misc

Ребята, сейчас загружен на 18 часов в сутки, поэтому пришлось внести некоторые коррективы в планы: чтобы сделать что-то интересное на ffmpeg, gstreamer или openCV есть различные ограничения из-за которых я решил не использовать их напрямую в этом задании. На базе ffmpeg можно сделать что-то вдохновляющее только если его собрать самому с поддержкой сторонних библиотек, что вызовет кучу ошибок от невнимательности даже если я распишу тут огромный листинг инструкций. GStreamer - и того хуже - его тоже нужно собирать в 4 приема. Ядро и кучу наборов плагинов отдельно. Это несложно, но многие и тут могут просесть в самом начале почем зря. С OpenCV давайте тоже до 4 курса оставим вопрос - Python я вам не преподавал, мы его просто распробовали на примерах, поняли, что несложный он. Но выучить его до понедельника вы вряд ли успеете. 

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

 Организация домашней системы видеонаблюдения на базе детектора движения motion (нужна веб-камера).

 Motion - свободная программа, которая следит за изменениями между кадрами и в случае если они существенны, она позволяет записывать происходящее в отдельный файл события. Работает в форме легковесного демона (программы, работающей в фоне, невидимо для пользователя) написанного на языке Си. Работает с телевизионными камерами и веб-камерами через video4linux и с сетевыми IP-камерами. Отслеживает сигнал, полученный с одной или нескольких видеокамер, и, при обнаружении изменений на картинке осуществляет запись фотографий в форматах JPEG, ppm или видеопотока в формате MPEG (который также можно транслировать в сеть). Возможен захват кадров через определенные интервалы времени или по команде cron. Доступность информации о событии очень велика: кроме сохранения информация может быть отправлена на указанный адрес электронной почты, при возникновении события (обнаружении движения) может быть также выполнена пользовательская команда или скрипт.
 Например, если вы ушли из комнаты и в течение дня кто-то зашел и забрал у вас со стола книгу - этот момент будет отмечен в отдельном видео.
 
  Данное задание будет состоять из 3 частей
 1) Установка Linux
 2) Установка motion
 3) Запуск и настройка motion


1) Установка Linux

 Тем, кто этого в течение семестра не сделал не нужно опасаться сломать свой компьютер. Это можно сделать безболезненно, через виртуальную машину.  Для этого нужно
 а) Поставить VirtualBox
 б) Скачать из списка на сайте http://www.osboxes.org/ubuntu/ любой готовый контейнер. Все ну разве что кроме самого нового Ubuntu 17.10. В мире линукс лучше на один шаг отстоять от линии прогресса, иначе после установки можно забыть, зачем вы это ставили. Когда скачиваете, запишите на бумажке те пользователь/пароль, которые указаны для работы с этим контейнером.
 3) Подключить контейнер в VirtualBox через меню. Там будет что-то вроде "подключить готовую VM". Кликаете на созданный контейнер и в  окне запускается линукс. Тут все на уровне пользователя ПК.


 Рис 1. Пример работы с Linux в виртуальной машине

2) Установка motion

 Самая простая часть. В консоли введите sudo apt install motion и согласитесь с тем, что система подтянет из интернета все необходимое. Все, motion у вас.

3) Запуск и настройка motion

 Самая сложная часть. Не спешите в консоли писать sudo motion. Точнее можете это сделать, но вы ничего не увидите, потому что вся система в соответствии с философией Linux управляется не тумблерами в приложении а через текстовый файл. Понимайте это как отличную новость если бы вы настраивали умную камеру у которой нет монитора или робота. Всё по-взрослому. 

Расположение основных файлов
Конфигурация: /etc/motion/motion.conf
Информация о работе (логи): /var/log/motion/motion.log

Запустить/остановить сервис:

Запуск: sudo motion
Остановка: sudo service motion stop

Все настройки можно посмотреть здесь: https://www.altlinux.org/Motion


Важно проверить, что ваша веб-камера была в конфигурационном файле со стандартным адресом /dev/video0. Открывайте конфигурационный файл от имени суперпользователя (через sudo) и ищите опцию videodevice. Запустите сервер motion (sudo motion).
Проверьте, идет ли забор данных с камеры - это можно увидеть по лампочке камеры, можно посмотреть на встроенном сервере motion - открываете браузер и вводите http://127.0.0.1:8081/ . В случае если что-то идет не так, причину можно увидеть в логах. У меня например камера не стартанула из-за того, что формат данных был недоступен для нее. В настройках есть такая секция:

# Values :
# V4L2_PIX_FMT_SN9C10X : 0 'S910'
# V4L2_PIX_FMT_SBGGR16 : 1 'BYR2'
# V4L2_PIX_FMT_SBGGR8 : 2 'BA81'
# V4L2_PIX_FMT_SPCA561 : 3 'S561'
# V4L2_PIX_FMT_SGBRG8 : 4 'GBRG'
# V4L2_PIX_FMT_SGRBG8 : 5 'GRBG'
# V4L2_PIX_FMT_PAC207 : 6 'P207'
# V4L2_PIX_FMT_PJPG : 7 'PJPG'
# V4L2_PIX_FMT_MJPEG : 8 'MJPEG'
# V4L2_PIX_FMT_JPEG : 9 'JPEG'
# V4L2_PIX_FMT_RGB24 : 10 'RGB3'
# V4L2_PIX_FMT_SPCA501 : 11 'S501'
# V4L2_PIX_FMT_SPCA505 : 12 'S505'
# V4L2_PIX_FMT_SPCA508 : 13 'S508'
# V4L2_PIX_FMT_UYVY : 14 'UYVY'
# V4L2_PIX_FMT_YUYV : 15 'YUYV'
# V4L2_PIX_FMT_YUV422P : 16 '422P'
# V4L2_PIX_FMT_YUV420 : 17 'YU12'

У меня после нее было:

v4l2_palette 17

Выставьте лучше в MJPEG (v4l2_palette 8). Все современные камеры умеют слать картинки в (M)видео-JPG-формате, нам это и надо. После того, как выставили новое значение, не забудьте остановить сервер (sudo service motion stop) и запустить его снова (sudo motion). Если лампочка загорелась и логи (/var/log/motion/motion.log) перестали содержать ошибки, значит все нормально. Стандатная папка для записей это /var/lib/motion. Если все ок и вы откроете ее, там вы уже можете увидеть собственное озадаченное лицо в большом количестве вариаций.
 Далее на свой вкус можно править конфигурационный файл - изменять размер изображения, выставить адрес почты для сигнализации и о событиях, настроить web-сервер для того, чтобы можно было с любого устройства в домашней сети увидеть картинку с камеры, получить доступ к архивам и т.д. Только не забывайте после действий перезапускать сервер и следить что вы ничего не поломали (см. логи).



Рис 2. Пример логов и выходной папки в случае правильной настройки motion

Что мне нужно в отчете:
1) краткое описание ваших действий
2) скриншоты из 1-3 этапов. Если Linux у вас уже есть полноценный, то просто напишите об этом, можно не скринить
3) по motion - напишите какие настройки и как меняли, сделайте скриншот логов и папки с результатами (наподобие того, что приложен в этой новости).

Литература:
1. https://habrahabr.ru/post/125216/
2. https://webhamster.ru/mytetrashare/index/mtb0/1455102191tr0ca7cbhm
3. https://webhamster.ru/mytetrashare/index/mtb0/1455104283stq253bg0a
4. https://www.altlinux.org/Motion








This news item is from Видеоинформационные системы (СПБГЭТУ "ЛЭТИ")
http://rusvision.com/news.php?extend.14