OpenCV进阶之路:一个简化的视频摘要程序

一、前言

视频摘要又称视频浓缩,是对视频内容的一个简单概括,先通过运动目标分析,提取运动目标,然后对各个目标的运动轨迹进行分析,将不同的目标拼接到一个共同的背景场景中,并将它们以某种方式进行组合。视频摘要在视频分析和基于内容的视频检索中扮演着重要角色。

视频摘要主要运用在对长时间的监控视频的压缩上,它可以将不同时刻场景内目标的运动显示在同一时刻,这样大量减少了整个场景事件的时间跨度。一般的视频摘要的步骤可以总结为:

视频读取" role="presentation" style="display: inline; line-height: 1.8; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;">背景建模  " role="presentation" style="display: inline; line-height: 1.8; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;"> 前景提取" role="presentation" style="display: inline; line-height: 1.8; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;"> 目标轨迹跟踪" role="presentation" style="display: inline; line-height: 1.8; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;"> 目标的时序与空间规划 " role="presentation" style="display: inline; line-height: 1.8; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; position: relative;"> 生成浓缩视频

但是本文并不讨论上面的这些主题,这里我只想通过一个简单的去除视频里非运动帧来实现一个简单的视频压缩的功能。视频摘要不是本文的主题,文章想通过做一个简单的视频摘要程序对OpenCV下面几个功能进行介绍:

1)OpenCV与XML数据通信

2)视频的读取与写入

3)如何在没有OpenCV的环境中运行编译好的程序

二、与XML的交互

很多程序都需要有一个配置文件,可以手动的去调整一些运行中的参数,xml文件格式就是我们常用到的一种配置文件格式。opencv中提供了一个处理xml的类用来与xml文件进行简单的数据存储与读取通信。但这个类的功能有限,如果需要更多的功能可以利用第三方的库,比如libxml等。

我们所设计的视频摘要程序,跟常规的视频摘要不同,这里只是通过删除一些无运动目标的帧来达到视频压缩的目的,所以我们的算法可以设计如下:

1,定义一个目标运动的兴趣区域,作为检测区域。
2,遍历指定目录下的所有视频文件,并逐一的进行视频处理。
3,针对视频的每一帧,在检测区域内运用帧差法检测前景移动。
4,如果检测区域内前景的面积超过区域面积的10%,则说明有运动物体,则此帧进行保留,写入压缩视频。否则,该帧直接舍弃。
5,所有视频处理结束,则程序终止。

image

那么,我们需要一个配置文件,这个文件里需要保存下面几个内容:

1,检测区域的参数

2,视频文件的目录

3,视频文件的后缀格式

4,生存视频的保存目录

1 xml version="1.0"?> 
2 <opencv_storage> 
3 <roi>  3 460 1250 480roi> 
4 <videoReadPath>D:\ExtractKeyImages\video\videoReadPath> 
5 <videoSuffix>*.mp4videoSuffix> 
6 <videoSavePath>../result.avivideoSavePath> 
7 opencv_storage>

注意所有的节点都保存在opencv_storage节点下。

在OpenCV中定义了一个叫FileStorage的类,提供了一些简单的打开与读取xml文件内容的操作。


12下一页

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

本文作者2019-5-16 02:47 PM
人工智障
粉丝0 阅读900 回复0
上一篇:
OpenCV进阶之路:神经网络识别车牌字符发布时间:2019-05-16
下一篇:
OpenCV 曝出两个严重漏洞发布时间:2020-01-08

精彩阅读

排行榜

人工智能公众号

扫码微信公众号
我陪你畅想未来

最智能的人工智能网!
QQ:162057003
周一至周五 9:00-18:00
意见反馈:162057003@qq.com

扫一扫关注我们

Powered by Discuz! X3.4   © 2020 ( 鲁ICP备18055727号 )  |  |网站地图