admin 管理员组文章数量: 1086019
2023年12月17日发(作者:js教程网站)
ARTIFICIAL INTELLIGENCE AND IDENTIFICATION TECHNIQUES 人工智能及识别技术 在Delphi中利用VFW和简易摄像头 实现图像采集和处理 程剐 ,金毅仁 (1.安徽省教育招生考试院,合肥230022;2.合肥工业大学电气及自动化工程学院,合肥230009) 摘要:在多媒体系统中,视频的捕获以及处理技术是其非常重要的一个组成部分。主要介绍在Delphi应用程序中 利用VFw和简易摄像头实现图像采集和处理,实现了视频流的捕获和单帧数据的捕获,并可进行存储。 关键词:VFw;AVICAP;SendMessage;视频捕获;帧捕获 Use VFW and Simple Camera to Carry out Image Capturing and Processing in Delphi CHENG Gang .JIN Yiren2 (1_Anhui Education Examinations Authority,Hefei 230022; 2.School of Electirc and Automation Engineering,Hefei University of Technology,Hefei 230009) Abstract:The technology of Image capturing and processing is a very important part of the multimedia system.The scheme mainly introduces how to use VFW and simple camera to carry out image capturing and processing technologies in Delphi. achieving the capturing of image-stream data and frame data and the storage of them. Key words:VFW;AVICAP;SendMessage;ideo capture;frame capture 多媒体技术的不断发展给人们的生活带来了生机与活力, 件。由于VFw只有Vc和VB版,没有Delphi版,因此需要 在Delphi中一一声明DLL中的各个函数和变量。目前,Pc机 上多媒体应用程序的视频部分,大都是利用vFw API开发的。 1.2体系结构 它已经深入到人们生活的方方面面,与人们的生活息息相关。 现代的多媒体通信在电视会议、可视电话、可视图文业务等 领域得到了广泛的应用。另外,在很多工程应用程序设计中, 会涉及到大量的图像捕捉与图像处理的问题,如防盗报警系统 的设计、银行录像监控系统的设计、交通监控系统的设计以 VFw主要由以下6个模块组成,如图1所示。 及运动系统图像处理的设计等等。可见,在多媒体系统中, 视频的处理技术是非常重要的一个组成部分,如何才能有效 地处理视频数据是多媒体技术当中的一个难点。 1 基本概念 1.1概述 当前,在Windows平台下开发视频应用程序一般采用两 种方式:一种是基于视频采集卡所附带的二次软件开发包 SDK进行。这种方式的优点是应用方便,实现便捷,但是这 种方式的缺点是对硬件的依赖性较强,而且各种视频采集卡 的功能不完全相同,往往不能充分满足各种工程视频应用程 序的开发需要。另一种方式是基于vFw进行的。VFw是 Microsoft公司为开发Windows平台下的视频应用程序提供的 图1 VFW模块关系图 (11 AVICAP.DLL:主要实现视频捕获功能,包含了用于 视频捕获的函数,为音像交错AVI格式文件和视频、音频设 备程序提供一个高级接口。 (2)MSVIDEO.DLL:能够将视频捕获窗口与获驱动设备 软件工具包,提供了一系列应用程序编程接口(API),用户 可以通过它们很方便地实现视频捕获、视频编辑及视频播放 等通用功能,还可利用回调函数开发更复杂的视频应用程序。 它的特点是播放视频时不需要专用的硬件设备,而且应用灵 活,可以满足视频应用程序开发的需要。Windows操作系统自 身就携带了VFw,系统安装时,会自动安装vFW的相关组 收稿日期:2009—10—27 连接起来,支持ICM视频编码服务。 f3 MCI31AVI.DRV:包含MCI命令解释器,实现回放功 能。 f4)AVIFILE.DLL:提供对AVI文件的读写操作等文件管 理功能。 (5)ICM:即压缩管理器,提供对存储在AVI文件中视 频图像数据的压缩、解压缩服务。 一93—
电脑编程技巧与维护 f6)ACM:即音频压缩管理器,提供实时音频压缩及解 压缩功能。 1.3视频捕获及其功能 AVIcap窗口类是VFw的一个重要组成部分,它主要作用 币0用函数SendMessage 0 ̄WndC,WM—CAP—SET—PREVIEWR ATE,66,0)和函数SendMessage(hWndC,WM—CAP—SET—SCAL E,1,0)设置预览的速度与比例,也可以使用设备的默认值。 利用函数SendMessage f hWndC,WM—CAP_SET_OVERLAY,1, o)选择是否采用叠加模式预览,以保证视频速度快,占用系 是实现视频的捕获。AVIcap为应用程序提供一个简单的基于 消息的接口,通过该接口,程序可以访问视频和波形音频硬件 并控制视频流到硬件的捕获。通过AVIcap,程序员可以轻松 地将视频捕获功能加入到自己的应用程序中。AVIcap支持实 时视频流捕获和单帧图像捕获。此外,AVIcap使程序员可以 统资源少。最后利用函数SendMessage(hwndc, WMCAPSET—__PREVIEW,1,0)实现视频的预览。 2 Delphi实现视频捕获 (1)AVICAP类支持实时视频流捕获和单帧捕获,并提 控制视频的开始和结束位置,并加入了如序列帧捕获等功能。 使用AVIcap生成的捕获窗具有以下的功能: f1)将视频流和音频流捕获到一个AVI文件中。 f2)动态地同视频和音频输入器件连接或断开。 (3)以Overlay或Preview模式对输入的视频流进行实时显 示。 f4)在捕获时,可指定所用的文件名,并可将捕获文件的 内容拷贝到另一个文件。 (5)设置捕获速率。 (6)显示控制视频源、视频格式及视频压缩的对话框。 (7)创建、保存或载入调色板。 (81将图像和相关的调色板拷贝到剪贴板。 (9)将捕获的单帧图像保存到DIB格式文件。 1.4 SendMessage函数 SendMessage是Windows API(应用程序接口)函数之一, SendMessage函数的功能是“发送消息”,即将一条消息发送 到指定对象(操作系统、窗口或控件等)上,以产生特定的 动作。 函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam); 参数: hWnd:其窗口程序将接收消息的窗口的句柄。 如果此参数为HWND—BROADCAST,则消息将被发送到 系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗 口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。 Msg:指定被发送的消息。 wParam:指定附加的消息。 IParam:指定附加的?肖息。 返回值:返回值指定消息处理的结果,依赖于所发送的 消息。 1.5开发视频捕获程序步骤 i.5.1创建视频捕获窗 视频捕获利用AVIeap类的“capCreateCaptureWindowA” 函数来创建,并可以以此为基础,进行后续的设置操作。 1.5.2将捕获窗和设备驱动程序关联 创建好的视频捕获窗需要和一个设备相关联才能获得视 频信号。可以利用函数SendMessage(hWndC,WMCAP_DRIVE R_CONNECT,0,0)来实现。 i.5.3视频的预览 ——94—— 供对视频流的控制。通常使用的MCI虽然也提供数字视频服 务,并为视频叠加提供了ove ̄ay命令集,但这些命令主要是 基于文件的操作,还不能满足实时的从视频缓存中提取数字 的要求,对于没有视频叠加能力的捕获卡的PC机来说,用 MCI提供的命令是无法捕获视频流的。而AVICAP窗口类在捕 获视频方面具有一定的优势,它能直接访问视频区,而不需 要生成中间文件,因而实用性强,效率高。另外,它还能将 数字视频捕获到一个文件中去。 下面举例说明如何利用AVICAP类和SendMessage函数实 现视频流捕获和单帧捕获以及如何将它们捕捉到一个文件中 去。 11在Pc机上安装摄像头及其驱动程序,以保证其能正常 工作。 21利用Delphi新建一个工程,然后将Vfw.pas单元文件 包含进去。方法如下: implementation uses Vfw; {¥R .dfm} 说明:Vfw单元文件当中包含了vFw常用模块的各个函 数和变量。 3)定义变量,方法如下: Pl-ivate hWndC:THandle;//捕获窗句柄 4)在窗体上放置一个T Panel控件、四个TBitBtn控件、 两个TRadioButton控件、两个TSaveDialog控件。T Panel控件 用来显示视频,四个TBitBtn控件分别用作打开视频、开始捕 获、停止捕获、关闭视频,两个TRadioButton控件用来选择 是进行视频流捕获还是单帧捕获,两个TSaveDialog控件用来 指定捕获的视频流文件或单帧文件的文件名。 5)编写相应控件的代码,在开始捕获TbitBtn控件中写入 以下代码: procedure Tform1.BitBtn2Click(Sender:TOhject); vat pathName:string; begin if RadioButton1.Checked then begin if saveDialog1.Execute then begin pamName:=saveDialog1.FileName;,/指定视频流的保
ARTIFICIAL INTELLIGENCE AND IDENTIFICATION TECHNIQUES 俯路径 if hWndC◇begin 0 then 人工智能及识别技术 往往是采取多路的方式,从不同的观察角度对该对象进行图 像的采集。下面就对于这个问题,利用两个摄像头对某一对 象进行两路图像采集并简要阐述。 1)在窗体上放置2个T Panel控件、3个TBitBtn控件。2 个T Panel控件用来显示不同方位的图像,3个TBitBtn控件分 别用作打开视频1、打开视频2和关闭视频。 2)编写相应控件的代码,在打开视频1TbitBtn控件中写 —SendMessage(hWndC, WM0,Longint CAPFILESETCAPTUREFILEA,——(pchar(pathName))); ,/指定视频流文件名 SendMessage(hWndC,WM_CAP—SEQUENCE,0, 0);,/保存视频流数据 end; end; end; if RadioButton2.Checked then begin if saveDialog2.Execute then begin pathName:=saveDialog2.FileName; //指定帧数据的保存路径 ifhWndC<>0 then begin SendMessage(hWndC,WM CAP_HLE—SAVEDIB, 0,Longint(pchar(pathName)));,/保存帧数据 end; end; end; end; 在停止TbitBm控件中写入以下代码: procedure Tform1.BitBtn4Click(Sender:TObject); begin if hWndC<>0 then begin SendMessage(hWndC,WM_CAP_ABORT,0,0); //停止捕获 SendMessage(hWndC, WMCAP_DRIVERDISCONNECT,0,0); 哿捕获窗和设备驱动程序断开 end; end; 运行程序能在自己指定的路径下获得保存的AVI视频流 文件和DIB帧文件,运行如图2所示。 图2视频捕获图像l (2)利用Delphi实现多路视频捕获 在实际工程应用软件当中,对一个对象进行罔像的捕捉 入以下代码: procedure Tform2.BitBtnlClick(Sender:TOb]ect); begin hWndC0:=capCreateCaptureWindowA("Window0 , WS—CHILD or WSVISIBLE ,Panel1.Left,Panel1.Top, panel1.Width,panel1.Height,Form2.Handle,0); if hWndC0<>0 then begin SendMessage(hWndC0, WMCAPSETCALLBACK_ERROR,0,O); SendMessage(hWndC0, WM_CAP SET_CALLBACKSTATUSA,0,0); SendMessage(hWndCO,WM_CAP_DRIVER_CONNECT, 0,0); SendMessage(hWndC0,WM_CAP_SET_SCALE,l,0); SendMessage(hWndCO,WM_CAP_SET_PREVIEWRATE, 66,0); SendMessage(hWndCO,WM_CAP_SET OVERLAY,l, 0); SendMessage(hWndC0,WMICAP—SET PREVIEW,1, 0); end; end; 在打开视频2TbitBtn控件的代码可类似设定。在关闭视 频TbitBtn控件的代码与2.5中停止TbitBtn控件基本相同。运 行的界面如图3所示。 图3视频捕获图像2 在运行程序时,将第二个捕获窗与设备连接时,系统会 提示为第二个捕获窗选择视频源。应该选择与第一个捕获窗 不同的视频源,实现与视频源的连接,此时,就可以在界面 中同时显示不同的两副图像。 3 结语 在Delphi中利用vFw和简易摄像头实现视频流的捕获和 95——
电脑编程技巧与维护 (上接第92页) 最初的视频点播应用于卡拉OK点播,随着计算机技术的 发展,VOD技术逐渐应用于局域网及有线电视网,此时的 工进行培训。 5.3企业网直播 VOD技术趋于完善,但音视频文件的庞大容量仍然阻碍了 VOD技术的进一步发展。由于服务器端不仅需要大容量的存 储系统,同时还要承担大量数据的传输,因而服务器根本无 法支持大规模的点播。 随着网络技术的发展和普及,在企业网上直接收看体育 赛事、重大庆典、商贸展览成为很多网民的愿望,而很多厂 商希望借助网上直播的形式将自己的产品和活动传遍全世界。 这些需求促成了企业网直播的形成,但是网络的带宽问题一 随着技术的不断发展和完善,由于以下的原因使得基于 流媒体技术的VOD完全可以在局域网上传播。 (1)流媒体经过了特殊的压缩编码后很适合在局域网上 传输。 (2)客户端采用浏览器方式进行点播,基本无需维护。 (3)采用先进的机群技术可以对大规模的并发点播请求 进行分布式处理,使其能适应大规模的点播环境。 随着宽带网和信息家电的发展,视频技术会越来越广泛 直困扰着企业网直播的发展,不过随着宽带网的不断普及和 流媒体技术的不断改进,企业网直播已经从实验阶段走向实 用,并能够提供较满意的音视频效果。 流媒体技术在企业网直播中充当着重要角色,主要表现 在以下方面: (1)首先,流媒体技术实现了在低带宽环境下提供高质 量的音视频信息。 (2)智能流媒体技术可以保证不同连接速率下的用户能 够得到不同质量的音视频效果。 (3)流媒体的组播技术可以大大减少服务器端的负荷, 同时最大限度地节省带宽。 地应用于视频点播系统。目前,很多大型的新闻娱乐媒体, 如中央电视台、北京电视台等,都在Internet上提供基于流媒 体技术的节目。 5.2远程教育 6 结语 随着网络技术的不断发展,视频传播技术及其相关产品 将广泛应用于远程教育、网络电台、视频点播等方面,视频 电脑的普及、多媒体技术的发展以及网络计时的迅速崛 起,给远程教育带来了新的机遇。在远程教学过程中,最基 本的要求就是将信息从服务器端传到远程的客户端,需要传 送的信息可能是多元的,如视频、音频、文本、图片等。将 这些信息从一端传送到另一端是实现远程教学需要解决的问 题,在当前网络带宽的限制下,流式传输将是最佳选择。学 生在家通过一台计算机、一条电话线、一个调制解调器就可 以参加远程教学。教师也无须另外做准备,授课的方法基本 传播技术必将会在未来的网络应用中发挥更大的作用。本系 统成功地应用了该技术,它可以在企业网内进行多媒体信息 的发布和交流。 参考文献 [1]郑志强,李文中.网络影音即时播发技术公开.北京:中 与传统授课方法相同,只不过面对的是摄像头和计算机而已。 目前,能够在企业网上进行多媒体交互教学的技术多为流 国青年出版社,2000. [2]万罡,周洞汝.流媒体技术在校园网中的应用及前景展望. 计算机与信息技术,2001. [3]林福宗.多媒体技术基础.北京:清华大学出版社,2000. 媒体技术,如Real System、Flash、Shockwave等技术就经常被 应用到网络教学中。远程教育是对传统教育模式的一次革命, 它集教学和管理于一体,突破了传统面授的局限,为学习者 在空间和时间上都提供了便利。 除了实时教学外,使用流媒体的VOD技术还可以进行交 互式教学,达到因材施教的目的。学生可以通过网络共享学 [4]谢晓兰,冯嘉礼.基于流媒体的VOD网站架设.广西科学 院学报,2003. 作者简介 习经验。大型企业可以利用基于流媒体技术的远程教育对员 张余,男(1982-),助理工程师,研究方向:计算机技术。 一96一
版权声明:本文标题:在Delphi中利用VFW和简易摄像头实现图像采集和处理 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1702744326a429037.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论