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

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

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

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

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

One Solution collect form web for “Сравнить видео и изображение (в процентах от различий)”

движение

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

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

пример

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 = …", включая одинарные кавычки.

  • извлечение информации о кодеках из rpt-потока
  • Не удалось выполнить вывод в TCP через avconv
  • Джиттер при записи экрана с помощью avconv
  • Как скачать самое высокое качество .mp3 с youtube-dl на Sierra?
  • Интерактивно объединяйте видеофайлы
  • Невозможно передать оба источника звука, работает только микрофон
  • Преобразование видео в тот же формат, что и другое видео.
  • Вырезание AV-файла (MP4)
  • Почему пакет libav-tools не содержит avserver на Debian 8
  • как объединить два источника аудиосигнала с помощью avconv
  • avconv создает файлы, продолжительность которых неверна
  • Linux и Unix - лучшая ОС в мире.