视频捕捉程序开发基本步骤.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
视频捕捉程序开发基本步骤

2 视频捕捉程序开发的基本步骤 2.1 使用AVICap窗口类 笔者使用的是AVICap窗口类来开发视频捕捉程序。AVICap类支持实时视频流捕捉和单帧捕捉,并提供对视频源的控制。通常使用的MCI控件虽然也提供了数字视频服务。并为视频叠加提供了Overlay命令集等,但这些命令主要是基于文件的操作,还不能满足实时地从视频缓存中提取数据的要求。对于使用没有视频叠加能力的捕捉卡的PC机来说,用MCI提供的命令集是无法捕捉视频流的。而AVICap窗口类在捕捉视频方面具有一定的优势,它能直接访问视频缓冲区,而不需要生成中间文件,因而实时性很强,效率也很高。另外,它还可将数字视频捕捉到一个文件中。 2.2 开发的基本步骤 开发视频捕捉程序主要有以下四个步骤: (1)创建“捕捉窗”。 在进行视频捕捉之前必需要先创建一个“捕捉窗”,并应以此为基础进行所有的捕捉及设置操作。“捕捉窗”可用AVICap窗口类的“Cap Create Capture Window”函数来创建,其窗口风格可设置为WSCHILD和WS_VISIBLE参数。 “捕捉窗”类似于标准控件,它具有下列功能: 将视频流和音频流捕捉到一个AVI文件中; 动态地同视频和音频输入器件连接或断开; 以Overlay或Preview模式对输入的视频流进行实时显示; 在捕捉时,可指定所用的文件名,并可将捕捉文件的内容拷贝到另一个文件; 设置捕捉速率; 显示控制视频源、视频格式及视频压缩的对话框; 创建、保存或载入调色板; 将图像和相关的调色板拷贝到剪贴板; 将捕捉的单帧图像保存到DIB格式文件。 (2)关联捕捉窗和驱动程序 单独定义的捕捉窗是不能工作的,它须与一个设备相关联才能取得视频信号。用函数CapDriver Connect可使捕捉窗与其设备驱动程序相关联。 (3)设置视频设备的属性 通过设置TcaptureParms结构变量的各个成员变量,可以控制设备的采样频率、中断采样按键、状态行为。设置好TcaptureParms结构变量后,可以用函CapCaptureSetSetup使设置生效。之后还可以用CapPreviewScale、CapPreviewRate设置预览的比例与速度,也可以直接使用设备的默认值。 (4)打开预览 利用函数CapOverlay可选择是否采用叠加模式预览,以使系统资源占用小,视频显示速度加快。然后用CapPreview启动预览功能,这时就可以在屏幕上看到来自摄像机的图像了。 通过以上四步就可以建立一个基本的视频捕捉程序,但假如想自己处理从设备捕捉到的视频数据,则要使用捕捉窗回调函数来处理,比如一帧一帧地获得视频数据或以流的方式获得视频数据等。 3 基于Delphi的视频捕捉程序 根据系统对系统访问、处理速度等方面的非凡需求,笔者选用Delphi作为开发工具。下面以开发一个逐帧从视频设备上捕捉视频数据的程序为例,来说明每个函数的作用以及开发的具体过程。所给例程的功能是可以在屏幕上显示捕捉到的视频,并可以获得每一帧的图像数据。具体步骤如下: (1)新建一个工程,并将AVICAP32.PAS包含到USES中。 {PASCAL INTERFACE for AVICAP32 DLL} {Converted from microsoft Header file by ArTee} {Free to use - Im NOT responsible fo bugs} unit avicap32; interface uses Windows, Messages, SysUtils, MMSystem; ?//This part might be buggy. ?//It Assumes types because I cannot find the correct unit type ? HVIDEO = longword; //Handle; ? UINT?? = longword; ? POINT = record ??? x, y: integer ? end; ? LPPOINT = ^POINT; ? FOURCC = record ??? c1, c2, c3, c4: char; ? end; ? mmioFOURCC = FOURCC; ? LPVOID???? = Pointer; //LPWAVEHDR, LPVIDEOHDR worden gebruikt in de call-back functions! ik heb ze maar gereplaced met integers. {*************************************************************************** ?*

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档