基于DIRECTSHOW和数字减影技术的视频监控系统.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:4 大小:250KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

基于DIRECTSHOW和数字减影技术的视频监控系统.pdf

基于DIRECTSHOW和数字减影技术的视频监控系统.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

万方数据基于Dow与数字减影技术的视频监控系统①hictres引言2实现原理VideoMonitoringSystemDirectshowandDigitalSubtractionAngiography周永刚张有忱(北京化工大学机电学院北京1摘要:计算机系统应用2009年第2期00029)随着计算机技术的进步,视频监控技术已经在计算机领域得到了发展,但是目前市场上的视频监控设备都比较昂贵,因此不能普遍的应用。本文介绍就是一种性价比很高的监控系统,系统利用常见的USB摄像头为视频捕捉设备,通过Directshow技术实现计算机对摄像头的控制;通过数字减影技术实现对摄像头捕获到图像的处理。该系统可以有效地监测到监控区域物体位置的变化。从而达到监控报警的目的,而且成本低,使用方便可以被广泛的应用到各个领域。关键词:Directshow数字减影视频监控VCUSb摄像头1视频监控技术是为了满足银行、交通、化工厂等要害部门和社会领域的安防需要而发展起来的一门独立的技术。早期的监控主要基于本地模拟图像,主要由摄像机、视频矩阵、监视器、录像机组成,通过视频线、控制电缆连接,但只能实现监视的效果,不能自动报警。随着计算机多媒体技术与数字图像处理技术的发展,现在的监控系统已经可以实现实时视频监控并自动报警。本文利用VC++编程,结合Directshow与数字减影技术来实现视频监控报警系统。本文介绍的监控软件,通过Directshow实现对USB摄像头视频的捕获:利用数字减影技术实现对图像的处理完成图像对比的功能。Directshow工作原理Directshow是微软公司提供的一套在Windows平台上进行媒体流处理的多媒体开发包,与DirectX开发包一起发布。是微软公司推出的新一代基于COM组件对象模型的系统。由许多模块化的软件组件组成。Directshow采用多线程多任务的方式,因此我们利用Directshow支持多线程的特性,用一个线程实现数据的采集与回放,另一个线程进行图像处理,从而达到视频监控的目的。在Directshow中最基本的概念是过滤器(Fliter)。一个过滤器就是一个COM对象,也是一个具有特定功能的模块,它能够对数据流进行操作,如读取、拷贝和写入文件等。Directshow提供了许多过滤器,大多数过滤器按照功能可以分成三类:源过滤器(SourceFilter)、转换过滤器(TransformFliter)和渲染过滤器(Renderingo每个过滤器都有引脚(Pin),相当于输入、输出插头,Filter与Filter通过Pin连接构成FilterGraph然后与外接设备连接组成一个完整的系统图1Directshow体系结构图Filteron2.1①收稿时间:2008—08—2192实用案例ApplicationCase万方数据l③通过渡备枚举方式获得设备友好名称2009年第2期计算机系统应用2.1.1实现USB摄像头视频的捕获图2是程序中Filter在GraphEdit中的调试链路,其中“USB68”是一个视频捕捉Filter,图中我们也可以看出这是一个带有USB接口的数码摄像头,负责采集图像并向下一级Filter传送数据;用来接受上一级传送的数据并以视频方式显示出来。要想在程序中使用它们就要创建FilterGraph(过滤器图表),把Filter有机的连接在一起发挥作用。具体步骤如下:①在DSControl类中创建几个接口全局变量//ICaptureGraphBu.Ider2’m—pBuilder;//视频采集过滤器//摄像头的FilterFilter在GraphEdit中的调试链路②为了简化FilterGraph的构建,DirectShow提供了辅助构建组件,其中组件(提供了ICaptureGraphBu.-Ider2接口)可以进行视频的采集。可以通过这个接口方便地创建视频采集过滤器图表,然后再将它添加到IGraphBuilder图表管理器中(如图3)。图3添力口ICaptureGraphBu.Ider2代码如下://创建Filterhr=CoCreatelnstance(CLSID—FilterGraph,NULL。CLSCTx—lNPROC,liD—IGraphBuilder。(void+★)&m—pGB);if(FAILED(hr)){}创建视频捕捉所需的hr=CoCreatelnstance(CLSID—CaptureGraphBu.1dr2,(void★★)&m—pBuilder);if(FAlLED(hr)){m—pBuilder->SetFiltergraph(m—pGB);//设置(FriendlyName)从而创建Video68”),并把它加入到FilterGraph中。在构造VideoFi