无线视频信号采集系统设计

2015-06-29 17:43贾磊
科技资讯 2015年14期

贾磊

摘 要:无线视频采集系统由无线摄像头采集视频信息并发射一定频率的无线信号,发送出的无线模拟信号由无线信号接收器接收,通过视频连接线把信号送到USB视频采集卡EASYCAP中,视频采集卡把送入的模拟信号转换成数字信号送到连接的计算机中,实现无线视频的采集和通过软件在计算机中对信号进行处理。

关键词:无线视频信号采集 VC++ VFW 截图录像

中图分类号:TN911 文献标识码:A 文章编号:1672-3791(2015)05(b)-0028-03

随着社会的不断进步,各领域得到了迅速的发展,机械化、自动化已经成为了现代生产生活的主流生产方式,这样就对监控系统有了一个更高更成熟的要求,需要有一套方便可靠的视频采集系统作为监控系统的平台。视频采集系统分为有线视频传输网络和无线视频传输网络,在特殊工作环境越来越占据我们大部分工作的今天,周边的工作环境不允许使用有线网络,并且还带来了高建设、和高维修的费用,所以无线视频信号的采集系统已经变成国际上重点的研究和发展方向。无线视频采集系统可以运用在工厂,用于监控自动化高的生产设备,也可以装载到机器人中完成特殊的任务,比如排爆机器人,降低人员的伤亡。

现在对无线信号的采集和处理主要通过视频采集卡进行采集,有一些公司生产的采集卡提供第三方的软件开发包(SDK)这样便于用户进行第二次开发。在监视计算机方面主要使用VC++,VB等开发软件进行监视界面的开发,但是总体比起来VC++在视频处理上比VB较为成熟,利用VC++中的VFW视频开发包对视频采集卡采集回来的视频信号进行处理。

1 视频信号采集系统组成

该系统的组成大致分为硬件和软件部分,该文对软件部分的设计和开发做着重的介绍,软件部分则利用VC++6.0为软件开发平台。

1.1 硬件部分

硬件部分由无线摄像头、摄像头信号接收器和USB视频采集卡三部分组成。硬件连接如图1所示。

USB视频采集卡工作原理。

该次视频采集系统采用的是EASYCAP的USB视频采集卡,视频采集卡是我们进行视频处理必不可少的硬件设备,无线摄像头发送的和无线信号接收器接收的信号是连续的模拟信号,但是计算机却不会识别模拟信号,计算机只识别0或1这样的二进制码,这样就需要一个像本系统中的USB视频采集卡把无线视频接收器采集到的模拟信号进行模/数转换,把连续的模拟信号转换成离散的数字信号,这样经过转换后的数字信号就可以被计算机编辑、处理和保存了。

在该系统中视频采集软件通过驱动识别USB视频采集卡并对采集回来的信息进行处理,因为视频采集卡采集到的都是一幅幅静态图片,所以要在软件中设置与USB视频采集卡相匹配的采集速率,这样就能对视频信号进行静态图片的抓取和保存,对视频流信号进行保存。具体数/模转换流程如图2。

1.2 软件部分

软件部分主要采用了VC++6.0来编写采集程序。

VC++6.0由微软公司开发,它是一个基于Windows操作系统的可视化集成开发环境,同时也具备C++语言编译器的功能。Visual C++6.0由编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具组成。

VFW(Video for windows)是视频开发应用的一种早期技术。Microsoft的Visual C++从4.0版开始就支持Video for Windows(简称VFW)了,这给视频捕获编程带来了很大的方便。VFW(Video for Windows)是微软公司开发的针对于Windows自带的一个数字视频编辑软件开发包。用户不用自己安装VFW,而是Windows系统中自带了这个视频开发包,方便了用户的使用。VFW的中心就是一个AVI文件标准,AVI(Audio Video Interleave)就是一种声音和视频同步组合在一起的一种文件,它是一种有损的压缩形式。

在VFW中为用户提供了一套完整的应用程序接口(API),API可以为用户提供一种与应用程序访问一组例程的能力,而且用户不需要访问源码和了解内部工作的细节。编写程序时可以利用API函数来编写应用程序,这样就可以避免编写无用程序,减小工作量。

VFW的视频捕获主要由AVICap窗口类来完成。AVICap窗口类为应用程序提供了一个基于消息的接口。在该系统中视频的捕获和单帧捕获都是靠AviCap所提供的强大全面的函数和宏实现的,这是微软公司开发的VFW开发包为我们编辑视频采集软件提供的一条捷径,可以使用简单易读的函数和宏就可以达到我们编程需要达到的目的。

AVICap有两种显示视频的格式:(1)预览模式(preview),这是一个使用CPU资源的模式。视频流首先从采集硬件保存到系统内存,之后通过GDI函数将视频信息显示在捕获窗口中。从硬件角度讲,该模式需要使用VGA卡,通过VGA卡显示在监视器上。(2)叠加模式(Overlay)该模式显示视频是通过硬件的叠加,叠加的视频是不需要通过VGA卡的,叠加视频的硬件把自身的输出信号与VGA输出信号合并,最后显示到监视器上的信号是二者的组合信号。

2 VFW视频采集的开发

2.1 开发应用程序的步骤

VC++应用程序开发的一般步骤为:(1)创建一个项目;(2)采用workspace窗口和它的class view, file view, resource view去建立项目中的C++类、文件和资源;(3)将文件从项目中添加或删除;(4)编辑项目的源代码和资源;(5)为项目指定配置(Debug或Release);(6)连遍项目文件;(7)纠正连遍错误;(8)执行并测试生成的可执行文件;(9)测试项目文件;(10)剖视以及代码优化。

2.2 VFW采集开发流程

使用VFW进行视频采集大致分为如下几个部分基本流程。

(1)使用函数capCreatureWindows(...)创建应用程序的视频捕获窗口。(2)使用函数capsetcallbackonstatus(...)函数处理回调函数状态,并用capsCalLbackonerror(...)函数来设置错误信息的回调处理。但是该次系统设计没有使用回调函数。(3)查找USB视频采集卡的驱动并连接。(4)得到USB视频采集卡的驱动信息。(5)判断是否连接正确,并设置采集速率。

2.3 监控系统的建立

使用VFW的宏函数实现视频捕获和预览,应用程序简单、控制灵活。在本系统中,是基于VC++6.0的对话框应用程序框架实现编程开发,很多的应用程序都是基于这种开发方式的。另一部分应用就是基于文档的编程开发,单文档是主流。文档应用程序的最大特点是有标准菜单、客户区域任意调整;缺点是相对比对话框类,开发难度较大。

2.3.1 建立单文档应用程序

该系统是基于VC++6.0的项目建立向导创建一个单文档、无工具栏和状态栏的应用程序,下面是建立单文档应用程序的详细步骤:首先启动VC++6.0,选择“文件”→“新建”→“工程”命令。在工程选择卡中,选择MFC AppWizard(exe)。

工程名称栏中输入工程的名称,位置栏中输入的是工程所保存的文件位置。

下一步需要选择创建应用程序的类型有三类分别为:单文档、多重文档和基本对话框,由于本系统是视频采集界面,所以选择的应用程序为基本对话框应用程序,点击完成就成功的建立了一个基本对话框的应用程序工程。

2.3.2 建立对话框

对话框是监控软件和用户的交互平台,使用者可以在对话框中直接预览由USB视频采集卡采集到VC++中的视频信息,并对其进行抓取截图、录像、暂停和退出等功能,这些功能会以按钮的形势提供给使用者,方便对视频信号进行想要的处理。对话框建立的详细步骤如下:在工作空间下选择“resource view”选项卡打开dialog下拉文件并在dialog文件夹上右键单击选择插入dialog,创建一个新的对话框,此时新建的对话框就出现在右侧工作区中,我们可以对其进行大小的任意改变。

2.3.3 添加图像和按钮控件

对于本次系统的设计,需要对对话框添加“图像”和“按钮”控件,在工具箱中就可以找到并选择加入到对话框中的任意位置,“图像”的作用是显示由USB视频采集卡转换成的数字视频信号,起到一个监视屏的作用,因为代码中已经把窗口的大小作为一个指针,送到窗口创建函数capCreatureWindows()中了,当程序初始化时可以自动识别到窗口的大小并返回一个宽度和高度值,所以图像控件可以随意更改大小,函数中设置窗口X轴坐标和Y轴坐标的数据已经被指针所取代了。“按钮”则为使用者提供对采集回来的视频信息进行处理的功能,按钮有五个各自的功能分别为:播放、截图、录像、暂停和退出。在添加按钮时可以改变其名称,这个名称就是显示在按钮上的名称,起到提示其功能的作用。当添加好按钮时双击按钮就可以进入到按钮代码的编辑,用来响应函数的功能,在修改控件ID后,比如一个按钮控件,假设使ID为BUTTON1则建立按钮后在窗口类中的对话框类中自动添加了一个名为ONBUTTON1的按钮控件类。这个类则包含了这个按钮所包含的一些属性和信息。

关于窗口类,我们在运行程序的时候可以直接看到窗口对话框,在窗口建立之前系统要知道怎样建立一个窗口,和窗口返回的一些信息要交给谁处理。这样就需要我们创建一个窗口类来定义我们设计的窗口的各种信息,比如窗口的消息、函数的处理、窗口的风格、图标、鼠标、菜单等等。可以使按钮实现各种功能。下图为设计好的对话框。

具体程序代码不再详述。

3 运行调试

代码编辑完成后就要把工程保存,之后就可以编译了,在编译菜单下选择编译选项(也可以直接按F7键,同样可以对源文件进行编译),对源文件进行编译、执行及编译配置等操作,该菜单位于编译器的顶层菜单中。按F5可以调试应用程序,查看程序的运行情况。如果在调试程序时遇到问题,可以使用编译器中的“帮助”菜单调用MSDN帮助文件来解决问题。编译后在工程的文件夹下有个一DEBUG的文件夹中就会生成应用程序图标,双击就会运行应用程序。查看应用程序的运行情况,以及各个功能的实现情况是否正常。

在运行程序后,因为视频信号进入到USB视频采集卡后,采集卡又对信号进行一次硬件压缩,性质类似于对信号进行了编码,而本系统采用的是CapAvi来采集的信号,把压缩过的信号直接显示到了预览窗口中,所以会有信号的不稳定与数据的丢失。

其他的功能正常,程序运行正常。

4 结语

该系统基于VC++6.0利用VFW开发包,对无线视频信号进行采集和处理系统进行了设计。搭建了一个无线视频信号采集的平台。该系统主要的开发部分为软件部分,硬件只需进行驱动的安装和硬件连接即可。通过运行调试,取得了比较好的效果。

参考文献

[1] 刘锐宁,梁水,李伟明.Visual C++项目开发案例全程实录[M].北京.清华大学出版社,2011:1-62

[2] 任观就,张永林.实时视频图像捕获的实现方法[J].计算机工程,2002,28(8):268-270.

[3] 陈珲,张会汀,周杰华.利用VFW实现实时视频捕获及其应用[J].计算机应用.2003,23(8):141-143.

[4] 张艳珍,巩玉国,欧宗瑛,等.基于Windwos平台的视频捕获技术研究[J].计算机工程与设计,2002(3):10-12.