一种基于vc++视频图像实时采集方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种基于vc++视频图像实时采集方法

摘要:在数字图像处理技术的图像测量系统中,必须解决的问题就是图像采集,利用VFW技术来实现图像的实时采集,可以提高视频捕获的灵活性,减少了对视频设备的依赖性,为视频图像的处理和分析带来了非常大的便利。本文利用VFW中的A VICap 窗口类来采集图像,详细介绍了视频图像采集程序的方法,解决了数字图像采集及处理技术在图像测量中的应用问题。

关键词:VFW A VICap类图像采集图像测量

1 引言

随着自动化和计算机技术的飞速发展,越来越多的应用程序不仅要求能够处理已经存储好的图像,还要求能够实时的获取视频图像,比如医疗设备,视频会议,可视电话等系统,同时,用于工业的检测产品图像检测技术也有了飞速的发展,如焊缝自动跟踪、四轮定位系统等。而如何实现视频捕捉是程序设计的关键。视频图像的捕获一般有两种方法,一种是利用视频捕获卡所附带的SDK开发工具,这种捕获方法的实现是与设备有关的,依赖于视频捕获卡与摄像头的类型,不利用灵活应用;另一种捕获方法就是VFW(Video for Windows)[1],这给视频捕获编程带来了很大的方便,利用利用VFW技术可以提高视频不获的灵活性,减少了对视频设备的依赖性。Visual C+ +所提供VFW软件包中的A VICap 窗口类提供了一条捷径,我们能够方便地将视频操作功

能组合到应用程序中去。

2 基于Visual C+ +编写视频图像采集程序方法

2.1 A VICap窗口类的功能

VFW中A VICap窗口类是Windows环境下实现视频操作的重要工具。利用该类函数可以方便地实现视音频操作功能程序的编制。

A VICap类的主要功能有如下几个方面:动态链接和断开视、音频捕捉设备;设置视频捕捉速率;设置视频格式及来源;指定保存的文件名及路径;提供Overlay(视频叠加)和Preview(视频预览)两种显示模式;实时捕捉和存储单帧视频图像并送入剪贴板,也可捕捉视音频流并存入

A VI影音文件;通过A VICap的回调函数获得有关视频捕捉的状态。

2.2 A VICap窗口类的主要函数

A VIcap窗口类为开发人员提供了一整套视频操作函数,包括一些回调函数、宏及一些普通函数,利用这些函数可以实现视频捕捉及预览程序所需的窗口管理[4]。在Windows系统中,回调函数是一类特殊函数,功能类似中断函数,其调用过程由系统自动完成,回调函数的具体内容则由用户设定,在系统中当某一回调函数被设定后,在某一特定的条件满足时,系统自动调用该回调函数,如:Video -Stream Callback、capStatusCallback 等函数;在A VICap类中,宏的使用完全类似于普通

函数,其功能等同发送相应的Windows 窗口消息;A VICap 窗口类中的普通函数只有两个,capGetDriverDescription CreateCaptureWindow。下面将应用程序设计中常用到的几个主要的

A VIcap 窗口类函数加以介绍。

(1)HWNDVFWAPIcapCreateCaptureWindow (LPC2STR lpszWindowName , DWORD dwStyle , int x , int y ,int nWidth, int nHeight , HWND hWnd, int nID) ;

该函数主要完成视频捕捉窗口的开辟,如果函数调用成功,返回该窗口句柄,否则返回“NULL”。

(2)Int capDriverConnect ( HWND hWnd, int iIn2dex) , capDriverDisconnect (HWND hWnd)该两宏函数负责将视频窗口与捕捉设备相连接或断开。如成功,返回“TRUE”, 否则返回“FALSE”。

(3)int FileSetCaptureFile (HWND hWnd, LPCSTRFilename) 。该函数用于设置存储视频数据的影音文件名。函数调用成功,返回“TRUE”, 否则返回“FALSE”。

(4)BOOL capFileSaveDIB (HWND hwnd, LPCSTRszName) 函数负责捕捉视频窗口当前图像,并将其数据以BMP 文件格式存储到名为szName 的位图文件中。

(5)BOOL capCaptureSequence (HWND hWnd) 宏函数主要负责

触发程序开始捕捉视频流图像并将其压入所设定影音数据文件中。

(6)BOOL capPreviewRate(hwnd,wMS)宏函数负责设置视频图像预览速度。

3 视频图像实时采集程序的编制实例

实时视频捕获的流程.

本系统的视频图像捕获流程如图1所示。

4 结语

Visual C++中提供的A VICap窗口类为捕获数字视频图像及其相关操作提供了很大的方便,基于此思想开放出来的视频捕获应用程序,

界面形象直观,性能稳定,具有很好的灵活性和可扩展性,在很多数字图像处理技术的图像测量系统中都使用了这种方法。

参考文献

[1]David J Kruglinski(美) 著,Visual C++技术内幕[M],北京:清华大学出版社,2002.Beijing.

[2]官章全,韩云君,Visual C++高级编程范例[M],北京:电子工业出版社,2001.

[3]石峻,余松煜.Windows环境下的实时视频捕获技术[J].计算机工程,1999,25(8).

[4]陈珲,张会汀,周杰华利用VFW实现实时视频捕获及应用[J],计算机应用,2003年第8期141-143页.

相关文档
最新文档