用Delphi+DSPack开发数码摄像程序资料_第1页
用Delphi+DSPack开发数码摄像程序资料_第2页
用Delphi+DSPack开发数码摄像程序资料_第3页
用Delphi+DSPack开发数码摄像程序资料_第4页
用Delphi+DSPack开发数码摄像程序资料_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用Delphi+DSPack开发数码摄像程序摘要:考生肖像信息的即时采集越来越多地被应用到招生考试工作中。文章介绍了如何在Windows系统上运用Debhi7和DSPack快速开发基于DirectShow技术的数码摄像程序。0引言在招生信息采集工作中,一个非常重要的部分就是采集考生的肖像信息。随着考生人数的激增与工作要求的提高,肖像采集模式的不断调整,从最早的扫描仪扫描照片、数码相机联机拍摄直到现在的视频捕获卡+摄像机快速采集,以不断适应招生形势的变化。我们把联机直接拍摄考生肖像的程序叫数码摄像程序。对于数码摄像程序,早期大多利用VideoforWindow编写,它支持的设备种类少,且实现难度

2、较高。现在利用DirectShow可以开发出支持摄像头、内置或外置视频采集卡、1394卡、内置或外置电视卡等多种设备的数码摄像程序,但直接用DirectShow开发,难度同样很高且开发效率也不高。可是有了DSPack情况就完全不同了,利用它来开发一个数码摄像程序,几乎是件轻而易举的事情。DSPack是一组封装了MSDirectShow和DirectX技术的组件,用于在安装了DirectX9的Windows9x.ME、2000和WindowsXP系统上的多媒体应用系统的开发。它支持DeIphi5、6、7和C+Builder6,它不仅功能强大而且完全免费。本文对利用DSPack开发视频捕获方式的数

3、码摄像程序做一个粗浅的介绍。1DSPack的安装DSPack的下载地址为:progdigy/modules.php?name=DSPack,当前版本是2.3.4o为了避免不必要的麻烦,先要确认系统中已装上了DirectX9,然后再安装DSPack如果想进行VMRDirect3D或ASF方面的开发,则还需要下载并安装一些别的内容(请参考所下载的DSPack234.zip中所含Readme.htm中文件的相关内容)。下面是DSPack的安装步骤:(1)将DSPack解压至任意目录。假设解压至ProgramfilesDSPack目录,然后查看,有没有只读属性的文件,如果有,请把只读属性去掉;(2)以

4、Delphi7为例,在Tools>EnvironnientOptions>Li-brary>Librarypath中,添加以下搜索路径:ProgramfilesDSPacksrcDirectx9ProgramfilesDSPacksrcDSPack(3)用Files>open分另U打开Programfilespackages下的DirectX9_D7.dpk和DSPack_D7.dpk按Compile钮进行编译;(4)最后打开Programfilespackages下的DSPackDesign_D7.dpk,按Install钮进行安装。以上步骤如果顺利完成,并且在Del

5、phi工具栏上出现了如图1所示的DSPack工具栏,则安装成功。2一个最基本的摄像程序功能概述它由预览窗口、取景框、照片名输入框、拍摄钮、照片和设备连接与设置这六个部分组成。其使用步骤与方法为:首先,在程序运行时所显示的视频设备下拉列表中,选中其中一个(如果有多个的话),按连接按钮,程序就会连接指定的视频设备,如果连接正常就会在预览窗口中即时显示被拍摄对像;然后输入照片名,自由拖动取景框,框住要拍摄的部分(通常是头像),按拍摄按钮就可以把取景框中的内容拍摄下来显示在照片上,保存为并同时“照片名.jpg”。图2所示,这是通过一个LogitechQuickCamPro4000摄像头拍摄某游戏杂志的

6、封面女主角所看到的程序运行效果截图。3关键点说明(1)所用到的DSPack组件FilterGraph、Filter、Samp1eGrabber和VideoWindow各一个,将Filter、Samp1eGrabber和VideoWindow的FilterGraph属性都设置成FilterGraph的name并注意将FilterGraph的Mode属性设置成gmCaptureoDSPack及普通VCL的组件分布如图3所示。(2)视频设备的联接因为是要用来拍摄照片,所以我们要求只列出支持DireShow的视频设备就可以了,否则在设备列表中将出现一大堆与应用无关的设备。方法是声明一个TsysDevE

7、num型变量sysdev,在表单的OnCreate中,利用TSysDevEnum.Create(CLSID_VideolnputDeviceCategory)把视频设备列表取到sysdev中。(3)取景框的制作如果用VideoforWindow方式开发过视频捕获程序,就会知道要在一个视频流上放一个框不是一件容易的事一一任何控件往上一放,只要一连接视频,它就会消失。传统的办法是放一个Timer,在OnTimer事件中不停地调用API直接写屏画框。这种方式控制起来比较复杂,常常会由于interval设置得不当或因为机器性能的差异,出现取景框拖动时的轨迹残留与闪烁现象。在DSPack中可以用DSVi

8、deoWindowEx2来代替VideoWindow,因为它有Canvas,而且可以把视频输出到任何有Handle的控件上。如何利用它的这一特性来做可以移动的取景框,可以参考DSPack自带的一个例子(在Dspack,tDemoskDSVideoWindowEXkPlayWin中)。其实,用第种方法也不简单。更简单更直接的办法是可以在SampleGrabber的OnBuffer事件中,利用其GetBitmap方法,将视频流导向到一个普通的Image上,而在一个romage上,可以想放什么就放什么,控制起来很方便。因为窗口上没有必要放两个一样的视频,所以把VideoWindow的高和宽都设置成了0。这是个典型的懒人懒办法,其它副作用没发现,只是多了个Imageo(4)视频设备的属性设置有时候连接到程序中的视频设备并没有工作在想要的模式中,或者为了利用它们自带的一些功能,来改善画面的质量,而又想在程序中直接调出如图4所示的设置窗口时,就需要用到DsUtil的HaveFi1terPropertyPage()ShowFilterPropertyPage()和ShowPin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论