Обнаружение черного / пустого кадра в видео с помощью OpenCV

Я использую класс OpenCV 2.4.2 VideoCapture для захвата кадров из нескольких видео, и моя цель — сравнить кадры между видео для получения похожих видео (визуально похожих).

Я сталкиваюсь с двумя проблемами.

  1. Видео содержат пустые / черные рамки.
    Я могу перебрать каждый отдельный кадр (во время захвата видео) и проверить пиксели и т. Д., Чтобы обнаружить эти кадры. Есть ли более быстрый и эффективный способ сделать это? У меня есть более 1 тыс. Видео, и каждое видео имеет около 5–20 тыс. Кадров [я снимаю 1 кадр в секунду]. Я пишу в C ++.

  2. Сравнивая две огромные матрицы, можно проверить, насколько они «похожи».
    В конце концов я вычисляю огромную матрицу для каждого видео, где строки соответствуют количеству кадров, а столбцы соответствуют размерности дескриптора, вычисляемого для каждого кадра. Если мне нужно сравнить два видео по сходству, я обнаружил, что самое простое — вычислить евклидову матрицу. Но опять же, ужасно неэффективно, если я масштабирую до 1000 видео.

Любые советы и предложения будут оценены.

Спасибо,

0

Решение

Что касается первой проблемы, я думаю, что cv :: countNonZero является наиболее подходящим методом, он также работает очень быстро. резюме :: countNonZero возвращает количество ненулевых элементов на входе одноканальный массив.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]