Я использую класс OpenCV 2.4.2 VideoCapture для захвата кадров из нескольких видео, и моя цель — сравнить кадры между видео для получения похожих видео (визуально похожих).
Я сталкиваюсь с двумя проблемами.
Видео содержат пустые / черные рамки.
Я могу перебрать каждый отдельный кадр (во время захвата видео) и проверить пиксели и т. Д., Чтобы обнаружить эти кадры. Есть ли более быстрый и эффективный способ сделать это? У меня есть более 1 тыс. Видео, и каждое видео имеет около 5–20 тыс. Кадров [я снимаю 1 кадр в секунду]. Я пишу в C ++.
Сравнивая две огромные матрицы, можно проверить, насколько они «похожи».
В конце концов я вычисляю огромную матрицу для каждого видео, где строки соответствуют количеству кадров, а столбцы соответствуют размерности дескриптора, вычисляемого для каждого кадра. Если мне нужно сравнить два видео по сходству, я обнаружил, что самое простое — вычислить евклидову матрицу. Но опять же, ужасно неэффективно, если я масштабирую до 1000 видео.
Любые советы и предложения будут оценены.
Спасибо,
Что касается первой проблемы, я думаю, что cv :: countNonZero является наиболее подходящим методом, он также работает очень быстро. резюме :: countNonZero возвращает количество ненулевых элементов на входе одноканальный массив.
Других решений пока нет …