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



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

我已经研究过motion和OpenCV,但motion似乎只想处理原始视频流,而OpenCV似乎太先进了,不适合我使用。

我理想的解决方案是一个linux命令行工具,我可以将视频文件输入到该工具中,并得到一个简单的"是否包含移动"回答,这样我就可以丢弃不相关的文件。假阳性(数量合理)对我来说是完全可以接受的。

这样的工具存在吗?或者用其他工具做这个简单的例子?

您可以检查dvr扫描,这是一个基于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/

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

应该很容易从命令行使用。

如果您想后期处理已经捕获的视频,那么运动可能会很有用。

VLC允许您流式传输或转换媒体,以便在本地、专用网络或互联网上使用。因此,已经捕获的视频可以通过HTTP、RTSP等进行流式传输,运动可以将其作为网络摄像机进行处理。

此外:如何使用VLC媒体播放器进行流式传输

如果OpenCv对你来说是高级的,也许你应该考虑一些更简单的东西,那就是…SimpleCV(OpenCv的包装器)"这是计算机视觉变得容易了"。甚至还有一个使用SimpleCV进行运动检测的例子-https://github.com/sightmachine/simplecv-examples/blob/master/code/motion-detection.py不幸的是,我无法测试它(因为我的OpenCv版本与SimpleCV不兼容),但通常它看起来很好(并不复杂)——它只是从当前帧减去前一帧,并计算结果的平均值。如果这个值大于某个阈值(很可能需要调整),我们可以假设这两帧之间有一些运动。请注意,将阈值设置为0确实是个坏主意,因为两个连续帧之间总是有一些差异(照明、噪声等的变化)。

最新更新