使用OpenCV检测视频中的黑/空帧

时间:2013-07-29 20:16:25

标签: c++ opencv video-capture similarity euclidean-distance

我正在使用OpenCV 2.4.2 VideoCapture类从多个视频中抓取帧,我的目的是比较视频之间的帧以检索类似的视频(视觉上相似)。

我面临两个问题。

  1. 视频包含空白/黑框。 我可以遍历每个单独的帧(捕获视频时)并检查像素等以检测这些帧。是否有更快,更有效的方式以某种方式做到这一点?我有超过1k的视频,每个视频有大约5k-20k帧[我每秒捕获1帧]。我用C ++编写。

  2. 比较两个巨大的矩阵,检查它们是多么“相似”。 我最终为每个视频计算一个巨大的矩阵,其中行对应于帧的数量,并且cols对应于在每个帧上计算的描述符的维度。如果我需要比较两个视频的相似性,我发现最简单的事情是计算欧几里德矩阵。但是,如果我扩展到1000个视频,那么效率会非常低效。

  3. 任何建议和建议将不胜感激。

    谢谢,

1 个答案:

答案 0 :(得分:0)

关于第一个问题,我认为cv :: countNonZero是最合适的方法,它的工作速度也非常快。 cv :: countNonZero 返回输入单通道数组中的非零元素数