检测视频文件是否包含移动

时间:2015-02-04 11:15:58

标签: linux opencv video motion-detection

我有一堆来自网络摄像头的视频片段(持续时间为5,10,60秒),我正在寻找一种方法来检测“此视频片段是否有移动”,以确定该文件是否应该是在未来的处理阶段保存或丢弃。

我调查了motionOpenCV,但动作似乎只想处理原始视频流,而OpenCV似乎太过先进而无法使用。

我理想的解决方案是一个linux命令行工具,我可以将视频文件输入,并获得一个简单的“确实/不包含移动”回复,所以我可以丢弃不相关的文件。误报(合理数量)完全可以接受我的使用。

这样的工具是否存在?或者使用其他工具执行此操作的任何简单示例?

4 个答案:

答案 0 :(得分:3)

我遇到了同样的问题并编写了解决方案:https://github.com/jooray/motion-detection

在命令行中应该相当容易使用。

答案 1 :(得分:2)

如果您想对已捕获的视频进行后期处理,则motion可能会有用。

VLC允许您流式传输或转换媒体,以便在本地,专用网络或Internet上使用。因此,已捕获的视频可以通过HTTP,RTSP等进行流式传输,motion可以将其作为network camera进行处理。

此外: How to Stream using VLC Media Player

答案 2 :(得分:1)

如果OpenCv要为您提升,也许您应该考虑更容易的事情...... SimpleCV(OpenCV的包装器)"这是计算机视觉变得简单"。甚至有一个使用SimpleCV进行运动检测的例子 - https://github.com/sightmachine/simplecv-examples/blob/master/code/motion-detection.py不幸的是我无法测试它(因为我的OpenCv版本与SimpleCV并不兼容),但通常它看起来很好(并且不是很好的) ; t复杂) - 它只是从当前减去前一帧并计算结果的平均值。如果这个值大于某个阈值(很可能你必须调整),我们可以假设这两个帧之间有一些运动。请注意,将阈值设置为0确实是一个坏主意,因为在2个连续帧(灯光,噪音等的变化)之间始终存在一些差异。

答案 3 :(得分:0)

您可以检查dvr-scan,它是基于OpenCV的简单跨平台命令行工具。

仅以csv格式列出运动事件(仅扫描):

dvr-scan -i some_video.mp4 -so

要提取单个视频中的运动,请执行以下操作:

dvr-scan -i some_video.mp4 -o some_video_motion_only.avi

有关更多示例和各种其他参数,请参见: https://dvr-scan.readthedocs.io/en/latest/guide/examples/