一种基于vc++视频图像实时采集方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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页.