你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
基于DirectShowLib的家庭视频监控系统设计与实现(三)
 


3
视频监控系统设计

视频监控系统主要应包括以下功能模块:视频源选择、视频图像采集、监控视频录像、监控视频抓图等。视频图像采集主要依靠连接电脑的摄像头来完成,通过控制视频输入设备的选择,找到可用的视频源,而后根据DirectShow的要求,进行连接,即可完成视频源的选择、图像采集以及视频预览等功能。系统设计的框架如图1所示。

 


1 基于DirectShowLib的视频监控系统结构

视频图像的信息量是巨大的。对视频图像进行压缩是必须的。视频采用的压缩标准有:

. 静止图像压缩技术:JPEGM-JPEG。采用小波变换等技术,运用帧内处理技术。静止图像较清晰,但对连续运动图像,文件占用的带宽和硬盘都很大。

. 运动图像压缩技术:MPEG-1MPEG-2H.263MPEG-4 

DirectShow中有现成的已经实现的视频图像的压缩算法,我们在进行视频图像处理的时候,直接选择相应的可用的压缩算法即可。其中的音频采集也是一样的道理,这里略。

4视频监控系统程序实现

系统实现是在VS2008开发环境中进行的。首先,在VS2008中,选择C#语言,建立一个解决方案,命名为FamilyCapture。然后,加载DirectShowLib-2008工程。该工程是从开源网站上下载。接着,建立主工程,命名为FamilyCaptureProject,封装与DirectShowLib的接口函数到一个单独的类文件中,如Capture.cs。整个解决方案在VS2008环境下的视图如图2所示。

 


2 系统的解决方案物理视图

在系统的主窗体中,可以看到主界面,如图3所示。从界面可以看出,系统主要包括抓图和录像两个功能。

 


3 系统的主界面

抓图功能是系统的一个可扩展的功能,从监控的目的来看,可以设置定时或者根据移动监测算法主动抓图,这样就可以很容易监测到监控区域的移动物体或对象。这里,仅给出抓图的一般算法,如下:

Bitmap bitmap = this.m_Capture.SnapeBitmap();

if (bitmap != null)

 {

                    Image newImage = bitmap.GetThumbnailImage(320, 240, new Image.GetThumbnailImageAbort(IsTrue), IntPtr.Zero);

                    //创建图像

                    Bitmap image = new Bitmap(newImage);

                    //获取图像的BitmapData对像

                    BitmapData data = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

                    this.pictureBox1.Image = newImage;// Image.FromHbitmap(bitmap.GetHbitmap());

                    image.Save(this.GetFilePath() + ".jpg", ImageFormat.Jpeg);

}

录像功能是视频监控系统的最基本的功能。其实现算法如下:

try

            {

                            //选择音频的压缩Filter

                this.m_Capture.SetAudioCompressor("MPEG Layer-3");

                            //选择视频的压缩Filter

                this.m_Capture.SetVideoCompressor("DivX ;-) MPEG-4 Low-Motion");

                //选择视频源设备

this.m_Capture.SetVideoInputDevice(this.cb_VideoInputDevice.SelectedItem.ToString());

                //视频预览

this.m_Capture.VideoPreview();

//视频捕获、压缩、输出

                this.m_Capture.RecordVideo(this.GetFilePath() + ".avi");

                this.btnStop.Enabled = true;

                this.btnRecord.Enabled = false;

            }

            catch (Exception exception)

            {

                MessageBox.Show(exception.Message);

            }

通过程序编译、调试,最终的运行结果,如图4所示。很明显,系统运行后,自动进入到监控视频的预览状态。在该界面上,点击抓图,会在程序所在目录下输出相应的图像文件,并在窗口侧边显示抓图效果。如图5所示。如果点击录像,系统会进入到录像状态,直至点击停止,系统在程序所在目录下输入所录制的视频文件。当然,在实际应用中,我们可以设置录制时间,或者设置录像的存储原则等,以更灵活地满足视频监控的需要。

 


4 系统运行主界面

 


5 系统抓图后的运行效果图

5 结束语

DirectShowLib的功能强大,家庭视频监控系统仅使用了其中的一部分功能。如果要改进系统中的视频压缩算法,更好地满足视频监控的需要,可以在此基础上展开研究,实现更好的视频压缩Filter,加载到系统中就可以了。

基于DirectShowLib开发的这样的家庭视频监控系统,可以满足一般家庭用户的需要。方法简单,实现起来也不难,通过普通的USB摄像头,就可以在家中建立一个视频监控系统。当然,这仅仅是一个原型系统,还有许多功能需要实现,以满足更多用户的需要,比如网络监控、远程监控、移动监测等功能,这就是下一步工作的研究方向。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089