Intereting Posts
Debian + Huawei E3372h Получение уровня версии FreeBSD для загрузочной среды ZFS, которая смонтирована, но не загружена Я хочу скопировать удаленный файл txt через SSH, но без использования корневого доступа как использовать shell-скрипт с snmpwalk с OID, чтобы иметь идентификатор vlan, имя vlan, порт принадлежит vlans в таблице Excel Параллелизация цикла for Как вставить пробел каждые четыре символа в длинной строке? SVN не удалось подключиться к серверу взять входные данные из переменной и сохранить ее в той же переменной, но в файле diff Как избежать разницы в параметрах, которые использовались для создания разделов ext4 на разных дистрибутивах Linux? Чтение нескольких записей из входного файла Массовое устройство хранения не смонтировано Как сделать LXTerminals открытым в Lubuntu 11.04? Графический загрузочный экран, потерянный после обновления ядра как сохранить часть строк в файле на основе информации во втором файле? Функция сценария Bash, которая изменяет значение переменной

Сравнить видео и изображение (в процентах от различий)

Мне было интересно, можно ли получить процент разницы между видео и статическим изображением с помощью avconv (из libav )

У меня камера наблюдения, постоянно предоставляющая видео RTSP. Камера статически указывает на пол. Я знаю, как выглядит картина, когда все в порядке (у меня есть скриншот). Есть ли способ, используя avconv и его фильтры magicall, чтобы получить процент вариации между снимком экрана и видео, поступающим с камеры? Это было бы похоже на черный фильтр , но вместо того, чтобы иметь процент «черного» на изображении, я хотел бы получить процент различий между снимком экрана и видео, поступающим с камеры.

Я знаю, что есть много возможных предостережений, таких как изменения освещения, крошечные движения с камеры, но … Мне любопытно.

Я запускаю 64-битные Ubuntu (ядро 3.8.0-29) 12.04 с avconv версии 0.8.9

движение

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

Вы можете делать что-то в соответствии с запросами, где движение будет показывать дельта между эталонным изображением и видеопотоком.

пример

ss # 1ss # 2

avconv

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

выдержка

Хорошая новость заключается в том, что мы можем использовать автоматизированные инструменты для этого. В ffmpeg (avconv) есть все необходимое для библиотеки изображений libavfilter, чтобы извлекать неподвижные изображения из видео не каждые х секунд, но каждый раз, когда видеоизображение значительно изменяется (что более или менее равно изменению сцены). Эта магия широко известна как обнаружение смены сцены.

Один из подходов – позволить видеокодеку выполнять тяжелую работу. В большинстве кодеков используется метод идентификации «ключевого кадра», что означает, что «этот кадр является новой сценой» (I-кадр), а последующие изображения незначительно меняются от этого «основного кадра», и поэтому кодек может хранить только разницу (B- Frames) вместо полных кадров. Теперь в ffmpeg выбранный фильтр Стефано Сабатини проходит через видео и запускает сохранение соответствующего кадра только тогда, когда он встречает I-Frame / ключевой кадр (возможно, начало новой сцены)

  $ ffmpeg -vf “select='eq(pict_type,I)'” -i somevideo.mp4 \ -vsync 0 -f image2 /tmp/thumbnails-%02d.jpg 

Этот подход работает, но не идеален. Именно поэтому Клемент Бош добавил сцену, субфильтр обнаружения сцены для выбора. Если в вашей сборке ffmpeg есть этот код, вы можете вызвать его так:

  $ ffmpeg -vf “-vf select='gt(scene\,0.9)'” -i somevideo.mp4 \ -vsync 0 -f image2 /tmp/thumbnails-%02d.jpg 

Если ваш ffmpeg / avconv жалуется на «Неопределенный постоянный или отсутствующий» («в« сцене »), у вас, вероятно, нет кода обнаружения сцены в вашей компиляции libavfilter / vf_select.c.

Примечание:

Если ffmpeg / avconv жалуется на «« Отсутствует ») или слишком много аргументов в …» вы, вероятно, использовали примеры из документов, с экранированной запятой, без кавычек и т. Д. Убедитесь, что вы включили весь «filtergraph» в кавычки , как -vf "", где есть наш материал "select = …", включая одинарные кавычки.