基于vfw的实时视频图像采集处理程序设计

基于vfw的实时视频图像采集处理程序设计

ID:33694467

大小:81.09 KB

页数:3页

时间:2019-02-28

上传者:xinshengwencai
基于vfw的实时视频图像采集处理程序设计_第1页
基于vfw的实时视频图像采集处理程序设计_第2页
基于vfw的实时视频图像采集处理程序设计_第3页
资源描述:

《基于vfw的实时视频图像采集处理程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

第14卷 第11期微 机 发 展Vol.14No.112004年11月MicrocomputerDevelopmentNov.2004基于VfW的实时视频图像采集处理程序设计谢志鹏,陈锻生(华侨大学计算机科学系,福建泉州362011)摘 要:鉴于实时视频图像采集处理技术在安全监控、视频会议、网络聊天等领域正得到越来越广泛的运用,文中介绍如何利用VideoforWindows库函数来构建视频图像的采集框架;由于回调函数是各种型号视频采集卡处理视频图像的通用接口,分析了如何自定义回调函数来实时处理采集的视频数据,并利用梯度差分法来实时检测视频图像的活动轮廓,该方法可运用于视频目标监控、人脸检测等视频图像处理项目。关键词:捕获窗;自定义回调函数;梯度差分图像中图分类号:TN911173       文献标识码:A      文章编号:1005-3751(2004)11-0121-03DesignofRealTimeVideoImageAcquisitionandProcessProgramBasedonVideoforWindowsXIEZhi2peng,CHENDuan2sheng(ComputerScienceDepartment,HuaqiaoUniversity,Quanzhou362011,China)Abstract:Sincethegrowingapplicationofrealtimevideoacquisitionandprocesstechnologyinthefieldsofsecuritymoniter,videoconferenceandnetworkchatting,thispaperintroduceshowtodeveloptheframeworkofvideoimageacquistionprojectbasedonvideoforwindowslibrary;andbecausecall-backfunctionbeingthecommoninterfaceofvideocardoncapturingandprocessingvideodata,thispaperanalyzeshowtoprocesstheacquiredvideodatainrealtimewithself-definedcall-backfunction,andexplainstheadoptionofgradsdifferentialmethodtoacquiretheactivecontourofvideoimageinrealtime,whichcouldbeappliedinthevideoimageprocessingproject,suchasvideoobjectmoniter,facedetection.Keywords:capturewindow;self-definedcallbackfunction;gradsdifferentialimage  视频图像采集与处理在实时图像处理系统占有重要需要专用硬件。VfW可使程序员通过发送消息或设置属[1]地位。比如车辆检测、车牌号码识别、人脸检测等系统性来捕获、播放和编辑视频剪辑。[2]均要求对实时的视频图像系列进行采集和处理。捕获VfW库主要由如下6个模块组成:图像可以采用视频采集卡,也可使用usb接口的数码摄像a.AICAP.DLL,执行视频捕获,它为视频、音频设备驱头,视频采集卡一般提供了特定品牌和型号的动态连接库动提供高级接口;和开发工具包,其调用编写思想与文中介绍的基于VfWb.MSVIDEO.DLL,含一套DrawDib函数,用来处理接口摄像头采集程序相似,采用VfW接口的视频采集程屏幕上的视频操作;序独立于具体的硬件,适合现在普遍流行的usb接口的数c.MCIAVI.DRV包括对VfW的MCI命令解释器的码摄像头。驱动程序;d.AVIFILE.DLL,包含由标准多媒体I/O(mmio)函1VideoforWindows数提供的低层命令,用来读写AVI文件;VfW是微软公司推出的关于数字视频的一个软件包。e.ICM,视频压缩管理器,用于管理视频压缩/解压缩它能使应用程序通过数字化设备从传统的模拟视频源得的编译码器(Codec);到数字化的视像剪辑。VfW的一个关键思想是播放时不f.ACM,音频压缩管理器,用于管理音频压缩/解压缩的编译码器(Codec)。收稿日期:2004-03-02在VisualC++中,VideoforWindows函数通常封装基金项目:华侨大学科研基金资助项目(02HZR07)成AVIcap窗口类。通过使用AVIcap窗口类,可以在程序作者简介:谢志鹏(1972—),男,福建晋江人,讲师,硕士,研究方向为中更方便地集成视频采集功能。为调用AVIcap窗口类,多媒体技术、网络编程。头文件中必须包含#include“vfw.h”,源程序中要包含#©1995-2006TsinghuaTongfangOpticalDiscCo.,Ltd.Allrightsreserved. ·                       微机发展                    第122·14卷pragmacomment(lib,“winmm.lib”)和#pragmacommentwIndex号视频采集设备关联:(lib,“vfw32.lib”)语句,也可以在Project->setting->capDriverConnect(capWnd,wIndex)。objectLibrarymodules中包含上述2个lib文件。4)获取视频采集设备的能力,获取捕获窗状态、视频格式:2AVIcap窗口类函数capDriverGetCaps(capWnd,&capDriverCaps,sizeof1)回调函数。回调函数是一类特殊的函数,功能类似CAPDRIVERCAPS)于中断函数,不能由程序员显式调用,当满足某一特定的条capGetStatus(capWnd,&capStatus,sizeof件时,系统自动调用该回调函数。回调函数的具体内容则(CAPSTATUS));由用户自己设定。在AVIcap窗口类中的回调函数如capGetVideoFormat(capWnd,bmpInfo,(WORD)vfs);capSetCallbackOnFrame。如果该函数已经注册到系统中,当5)获取并设置捕获控制参数:捕获窗捕获某一帧视频时候,系统自动调用该函数,文中的capCaptureGetSetup(capWnd,&CapParm,sizeof实时视频图像处理部分就是在该回调函数中实现的,详见(CapParm));下文第4部分的程序。CapParm.dwRequestMicroSecPerFrame=66667;(152)宏。在AVIcap窗口类中,宏的使用完全类似于普framepersecond)通的函数,其功能等同于发送相应的窗口消息。例如宏CapParm.fYield=true;capPreview设置视频预览,与显式发送WM-CAP-SET-CapParm.fCaptureAudio=false;PREVIEW消息所完成的功能完全相同。CapParm.fAbortLeftMouse=false;3)普通函数。AVIcap窗口类中的普通函数包括CapParm.fAbortRightMouse=false;capCreateCaptureWindow和capGetDriverDescription。capCaptureSetSetup(capWnd,&CapParm,sizeof4)AVIcap窗口类中常用的结构。(CapParm));a.CAPSTATUS:定义捕获窗口的当前状态,包括图像6)启动视频捕获与预览:宽高,捕获窗处于预览(privew)还是叠加(overlay)。capPreviewRate(capWnd,MS-FOR-15FPS);b.CAPDRIVERCAPS:定义捕获设备的能力,包括捕capPreview(capWnd,TRUE);获设备编号,有无视频叠加(Overlay)能力,有无选择视频7)抓取单帧图像,保存到位图文件:源、控制视频格式的对话框等。dibFileNamec.CAPTUREPARMS:包含控制视频流捕获过程的参capGrabFrameNoStop(capWnd);数,如捕获每帧用多少微秒、是否捕获音频,指定ESC键或capFileSaveDIB(capWnd,&dibFileName));鼠标左键右键来终止捕获,捕获过程中允许最大丢帧率等。8)保存视频流到avi文件aviFileName:d.VIDEOHDR:视频数据块的头信息,在编写回调函capFileSetCaptureFile(capWnd,aviFileName);数时常用到其数据成员lpData(指向视频数据缓存的指针)capCaptureSequence(capWnd);和dwBufferLength(视频数据缓存大小)。9)终止捕捉并断开与采集设备的连接:其中前3种结构都有相应的宏来获取和设置结构信息。capCaptureStop(capWnd)capSetCallbackOnFrame(capWnd,NULL)3 视频捕获开发流程capDriverDisconnect(capWnd)。1)创建视频捕获窗口:capWnd=capCreateCaptureWindow4 在回调函数中实时计算梯度差分图像(“CaptureWindow”,WSCHILD|WS-VISIBLE,0,1)首先在视频采集初始化过程中利用0,160,120,hWnd,0);capSetCallbackOnFrame注册该回调函数。如CapWnd为返回的捕获窗口的句柄,其他操作均对该capSetCallbackOnFrame(capWnd,FrameCallback)。其中捕获窗进行。capWnd为捕获窗句柄,FrameCallback为回调函数,当发2)注册并定义回调函数:布实时检测视频图像边沿的时候,系统自动调用该回调函分别注册捕获错误回调函数、捕获状态回调和视频帧数。捕获回调函数:capSetCallbackOnError(capWnd,2)梯度差分图像计算方法。ErrorCallback);capSetCallbackOnStatus(capWnd,在FrameCallback内部计算每一帧视频图像的梯度差StatusCallback);分图像。差分图像的计算公式如下:capSetCallbackOnFrame(capWnd,VideoCallback)。G(x,y)=abs(G(x,y)-G(x+1,y+1))+3)连接视频捕捉设备,将捕获窗口capWnd与第abs(G(x+1,y)-G(x,y+1));©1995-2006TsinghuaTongfangOpticalDiscCo.,Ltd.Allrightsreserved. 第11期          谢志鹏等:基于VfW的实时视频图像采集处理程序设计·123·G(x,y)为采集的视频图像的某一个点的颜色值,x+x0y1=x0y0+width33;1,y+1为其右下角的像素点。r1=abs(ptr[x0y0]-ptr[x1y1]);由于采集的是彩色图像,因此必须对点(x,y)处的颜g1=abs(ptr[x0y0+1]-ptr[x1y1+1]);色值的3个分量R,G,B分别进行计算更新。b1=abs(ptr[x0y0+2]-ptr[x1y1+2]);r2=abs(ptr[x1y0]-ptr[x0y1]);3)回调函数内计算梯度差分图像。g2=abs(ptr[x1y0+1]-ptr[x0y1+1]);LRESULTPASCALFrameCallback(HWNDhWnd,b2=abs(ptr[x1y0+2]-ptr[x0y1+2]);LPVIDEOHDRlpVHDR)tmpLine[x0y0]=(BYTE)(r1+r2);{tmpLine[x0y0+1]=(BYTE)(g1+g2);//lpVHDR为当前采集的视频数据指针,其成员lpData指向tmpLine[x0y0+2]=(BYTE)(b1+b2);视频图像入口点}swnd=GetSafeHwnd()memcpy(ptr,tmpLine,(width-1)33);vfs=capGetVideoFormatSize(swnd);//更新视频图像每一行capGetVideoFormat(swnd,lpBmp,vfs)ptr+=width33;//跳转到视频数据下一行width=lpBmp->biWidth}height=lpBmp->biHeightbits=lpBmp->biBitCountBufferSize=vfs+width3height3bits/8;5 小 结imageData=随着usb2.0接口摄像头的普及,实时视频图像采集处[3]GlobalLock(GlobalAlloc(GMEM-MOVEABLE,BufferSize))理得到更普遍的应用,如智能交通、安全监控、人脸检测CopyMemory(imageData+vfs,lpVHDR->lpData,idth3与识别等。文中介绍了基于VfW的视频采集程序的设height3bits/8);计,该程序可以抓取视频帧保存为位图,抓取视频流保存LPBITMAPINFOlpBi=imageData为AVI文件,利用自定义回调函数,对每一帧视频图像进BYTE3ptr=lpBi+lpBi->biSize;行实时的差分运算,显示该图像的梯度边沿。//定位到实际像素点tmpLine=newBYTE[width33];参考文献://存放每一行像素点临时计算结果[1]陈锻生,谢志鹏.复杂背景下彩色图像车牌提取与字符分割for(inty=0;y

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭