基于VFW的现场视频图像采集与管理系统

时间:2022-07-04 11:03:26

基于VFW的现场视频图像采集与管理系统

摘要:在办案笔录系统中,笔录现场的视频图像信息与文字信息组成了重要的证据环节。通过应用VFW来实现视频图像数据的采集,在Visual C#环境下开发现场视频图像采集与管理系统,并最终实现现场视频图像信息的同步记录与管理。

关键词:VFW;Visual C#;视频图像;采集与管理

中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)34-9822-02

The Collection and Management of Spot Video Image System Based on VFW

WU Shun-zi, YUAN Bao-she

(Institute of Information Science and Engineering of Xinjiang University, Urumqi 830046, China)

Abstract: In the case recording system,The important evidence segment is made up of video image information and words information of recording spot.To collect the data of video image by using VFW ,To exploit the collection and management of spot video image system under the circumstance of Visual C#.And finally to achieve the management and the synchronic recording of spot video image information.

Key words: VFW; Visual C#; video image; collection and management

在公安、检察等机关业务中,笔录现场的信息是重要的证据依据。现场笔录工作不仅要对文字信息进行记录,还需要对现场视频图像信息和语音信息进行采集。现场视频图像采集与管理系统是运行在Windows平台上的一个可视化的采集管理软件。利用VFW不依赖于专用的硬件设备、支持软件平台小、低成本、开发捕获编程方便等特性轻松实现现场视频图像的采集工作[1]。同时系统还对采集的视频图像数据进行相应的管理,很大程度上方便了用户的操作。

1 系统总体设计

现场视频图像采集与管理系统主要包括视频采集管理模块和图像采集管理模块。图1是系统的总体设计框图。下面介绍系统各模块功能作用:

1.1 视频采集与管理模块

同步录像:实现视频数据采集与压缩,提供连续同步录像的功能,同时保存视频数据到指定路径。

1) 视频回放:回放刚刚采集成功的视频。

2) 视频管理:查找视频,浏览播放本地视频,删除视频等。

3) 视频设置:设置视频源和视频格式,视频保存路径等。

1.2 图像采集与管理模块

1) 照片截取:实现静态图像的截取,并提供连续截图功能。

2) 照片回放:查看刚刚采集成功的图像。

3) 照片管理: 照片浏览查看,照片查找和删除,照片转达到其他窗体使用。

4) 照片设置:设置照片属性格式,照片保存路径等。

2 现场视频图像采集原理方案

VFW是微软公司推出的一个关于解决数字视频方案的软件包。它为实现视频捕获提供了标准的接口,非常方便开发设计,同时也大大降低了开发难度。VFW主要由6个组成:AVICAP.DLL,MSVIDEO.DLL,MCIAVI.DRV,AVIFIFE.DLL,压缩管理器(ICM)和音频压缩管理器(ACM)[2]。通过应用这些组件,可以轻松实现视频捕获压缩,文件管理等功能。在视频图像采集的过程当中,主要是利用VFW的AVICAP组件去完成,通过调用AVICAP.DLL,创建AVICAP窗口类函数。完成视频捕获连接,本地预览设置,视频至AVI文件的捕获和单帧图像捕获等功能。由于AVICAP是一个基于消息的接口。可以在类中定义消息,宏函数来实现这些过程。总的来说,整个现场视频图像采集流程的主要步骤包括:a) 创建捕获窗口;b) 设置视频显示模式,注册回调函数;c) 连接视频采集设备;d) 获取并设置视频捕获相关参数;e) 视频图像采集,视频压缩保存;f)终止捕获并断开与采集设备的链接。图2为现场视频图像采集流程图。接下来将着重介绍利用AVICAP开发视频图像采集流程的实现过程。

3 现场视频图像采集实现

3.1 创建视频采集窗口并连接设备驱动

hWndC = capCreateCaptureWindow(lpszName,WS_CHILD|WS_VISIBLE,mLeft, mTop, mWidth, mHeight, mControlPtr, 0);//创建捕获窗口,得到句柄

SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0); //连接捕获设备

3.2 设置视频显示模式并注册回调函数

SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0); //设置窗口显示模式为覆盖模式。

SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0); //注册回调函数

3.3 获取并设置视频捕获相关参数

通过发送wm_cap_get_seqence_setup消息(capcapturegetsetup宏)给捕获窗体,可以获得一个captureparms数据结构的对象,captureparms 数据结构包括了视频流的控制参数,

public struct CAPTUREPARMS{ //视频捕获参数结构体

private int dwRequestMicroSecPerFrame;// 采集一帧花费的时间

private bool fYield;//是否使用一个独立的线程来采集视频

}

接着对captureparm对象的成员进行修改,然后发送wm_cap_set_sequence_setup消息(capcapturesetsetup)给捕获窗体来实现对视频捕获信息的修改。

SendMessage(hWndC,WM_CAP_GET_SEQUENCE_SETUP,Marshal.SizeOf(s), ref s); //获取视频捕获参数

s.dwRequestMicroSecPerFrame = 33333; // 采集一帧花费1/30秒

s.fCaptureAudio = true; //c采集音频

SendMessage(hWndC,WM_CAP_SET_SEQUENCE_SETUP,Marshal.SizeOf(s), ref s); //设置视频捕获参数并使之生效

3.4 现场视频保存,压缩和图像采集

//视频压缩采集

SendMessage(hWndC, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0); //调用压缩宏对话框,实现录像压缩

IntPtr hBmp = Marshal.StringToHGlobalAnsi(path); //将文件路径转换为ANSI格式,并复制到非托管内存[3]

SendMessage(hWndC,WM_CAP_FILE_SET_CAPTURE_FILEA,0,hBmp.ToInt64()); //进行视频采集

SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0); //保存成文件. 文件路径默认由path设置

//图像采集

IntPtr hBmp = Marshal.StringToHGlobalAnsi(path); // 同上[3]

SendMessage(hWndC, WM_CAP_SAVEDIB, 0, hBmp.ToInt64()); // 进行图像采集,并保存图像,文件路径默认由path设置

3.5 终止录像和结束视频捕获

SendMessage(hWndC, WM_CAP_STOP, 0, 0);//停止录像

SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);//结束视频捕获

4 结束语

该文利用VFW来开发现场视频图像采集与管理系统中的视频采集模块和图像采集模块,并对采集的视频和图像进行相应的编辑与管理。同时也给出了在Visual C#环境下VFW实现视频采集压缩的关键性代码。软件实现功能简单,操作方便,满足了笔录现场的视频、音频信息的和图像信息的采集与管理。

参考文献:

[1] 李江华,谢红,王晓丹.基于VFW实时视频捕获原理与实现[J].应用科技.2005(32):9.

[2] 吴之惠,徐海峰,刘显德.视频采集在视频监控系统中的应用[J].微计算机信息,2007(23):4-1.

[3] (美) Kris Jamsa. C/C++/C# 程序员使用大全――C/C++/C# 最佳编程指南(精华版)[M].张春晖,刘大庆,李越,译.北京:中国水利水电出版社,2005.

上一篇:谈计算机病毒的传播途径 下一篇:基于Matlab的指纹识别系统的研究与实现