1 引言
视频捕获与实时处理是目前图像处理系统中最关键的技术之一,能否准确捕获指定的视频图像,进而实现精确地数据分析与处理,关系到整个系统的成败。笔者在开发“公路安全线轧压检测系统”时就遇到此情况。该系统主要研究在公路关键地段,过往机动车辆是否瞬间轧压黄色安全线。因此车辆轧压安全线的一个主要原因是车辆超车或逆向行使而违反了上下行规则www.cechina.cn,这是造成交通事故的最主要、最直接的因素。本系统通过实时拍摄,抓取瞬间图像,并经过系统的分析和处理来及时准确地检测车辆行驶情况,从而驱动控制设备以作出相关处理。
显然,这个系统的关键之处是实时捕获视频图像。为此控制工程网版权所有,采用微软公司推出的关于数字视频的一个软件包VFW。它能使应用程序通过数字化设备从传统的模拟视频源得到数字化的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件。为了解决数字视频数据量大的问题,需要对数据进行压
表1 VFW功能模块
2 视频捕获程序开发的基本步骤
2.1 使用AVICap窗口类
笔者使用的是AVICap窗口类来开发视频捕获程序。AVICap类支持实时视频流捕获和单帧捕获,并提供对视频源的控制。通常使用的MCI控件虽然也提供了数字视频服务。并为视频叠加提供了Overlay命令集等,但这些命令主要是基于文件的操作,还不能满足实时地从视频缓存中提取数据的要求。对于使用没有视频叠加能力的捕获卡的PC机来说www.cechina.cn,用MCI提供的命令集是无法捕获视频流的。而AVICap窗口类在捕获视频方面具有一定的优势,它能直接访问视频缓冲区,而不需要生成中间文件,因而实时性很强,效率也很高。另外,它还可将数字视频捕获到一个文件中。
2.2 开发的基本步骤
开发视频捕获程序主要有以下四个步骤:
(1)创建“捕获窗”。
在进行视频捕获之前必需要先创建一个“捕获窗”,并应以此为基础进行所有的捕获及设置操作。“捕获窗”可用AVICap窗口类的“Cap Create Capture Window”函数来创建,其窗口风格可设置为WSCHILD和WS_VISIBLE参数。
“捕获窗”类似于标准控件控制工程网版权所有,它具有下列功能:
*将视频流和音频流捕获到一个AVI文件中;
*动态地同视频和音频输入器件连接或断开;
*以Overlay或Preview模式对输入的视频流进行实时显示;
*在捕获时,可指定所用的文件名,并可将捕获文件的内容拷贝到另一个文件;
*设置捕获速率;
*显示控制视频源、视频格式及视频压缩的对话框;
*创建、保存或载入调色板;
*将图像和相关的调色板拷贝到剪贴板;
*将捕获的单帧图像保存到DIB格式文件。
(2)关联捕获窗和驱动程序
单独定义的捕获窗是不能工作的,它须与一个设备相关联才能取得视频信号。用函数CapDriver Connect可使捕获窗与其设备驱动程序相关联。
(3)设置视频设备的属性
通过设置TcaptureParms结构变量的各个成员变量