用Delphi+DSPack开发数码摄像程序

来源 :计算机时代 | 被引量 : 0次 | 上传用户:liioopp123
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:考生肖像信息的即时采集越来越多地被应用到招生考试工作中。文章介绍了如何在Windows系统上运用Debhi 7和DSPack快速开发基于Direct Show技术的数码摄像程序。
  关键词:数码摄像;DSPack;DirectX;Direct Show
  
  0 引言
  
  在招生信息采集工作中,一个非常重要的部分就是采集考生的肖像信息。随着考生人数的激增与工作要求的提高,肖像采集模式的不断调整,从最早的扫描仪扫描照片、数码相机联机拍摄一直到现在的视频捕获卡+摄像机快速采集,以不断适应招生形势的变化。我们把联机直接拍摄考生肖像的程序叫数码摄像程序。对于数码摄像程序,早期大多利用Video forWindow编写,它支持的设备种类少,且实现难度较高。现在利用Direct Show可以开发出支持摄像头、内置或外置视频采集卡、1394卡、内置或外置电视卡等多种设备的数码摄像程序,但直接用Direct Show开发,难度同样很高且开发效率也不高。可是有了DSPack情况就完全不同了,利用它来开发一个数码摄像程序,几乎是一件轻而易举的事情。
  DSPack是一组封装了MS Direct Show和DirectX技术的组件,用于在安装了DirectX9的Windows 9x、ME、2000和Windows XP系统上的多媒体应用系统的开发。它支持Delphi5、6、7和C++ Builder 6,它不仅功能强大而且完全免费。本文对利用DSPack开发视频捕获方式的数码摄像程序做一个粗浅的介绍。
  
  1 DSPack的安装
  
  DSPack的下载地址为: http://www.progdigy.com/modules.php?name=DSPack,当前版本是2.3.4。为了避免不必要的麻烦,先要确认系统中已装上了DirectX9,然后再安装DSPack。如果想进行VMR、Direct3D或ASF方面的开发,则还需要下载并安装一些别的内容(请参考所下载的DSPack234.zip中所含Readme.htm中文件的相关内容)。下面是DSPack的安装步骤:
  (1)将DSPack解压至任意目录。假设解压至Programfiles\DSPack目录,然后查看,有没有只读属性的文件,如果有,请把只读属性去掉;
  (2)以Delphi 7为例,在Tools>Environment Options>Li-brary>Library path中,添加以下搜索路径:
  Program files\DSPack\src\Directx9
  Program files\DSPack\src\DSPack
  (3)用Files>open分别打开Program files\packages下的DirectX9_D7.dpk和DSPack_D7.dpk按Compile钮进行编译;
  (4)最后打开Program files\packages下的DSPackDesign_D7.dpk,按Install钮进行安装。
  以上步骤如果顺利完成,并且在Delphi工具栏上出现了如图1所示的DSPack工具栏,则安装成功。
  

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

   
  3 关键点说明
  
  (1)所用到的DSPack组件
  FilterGraph、Filter、SampleGrabber和VideoWindow各一个,将Filter、SampleGrabber和VideoWindow的FilterGraph属性都设置成FilterGraph的name,并注意将FilterGraph的Mode属性设置成gmCapture。
  DSPack及普通VCL的组件分布如图3所示。
  

 
  (2)视频设备的联接因为是要用来拍摄照片,所以我们要求只列出支持DireShow的视频设备就可以了,否则在设备列表中将出现一大堆与应用无关的设备。方法是声明一个TsysDevEnum型变量sysdev,在表单的OnCreate中,利用TSysDevEnum.Create(CLSID_VideolnputDeviceCategory)把视频设备列表取到sysdev中。
  (3)取景框的制作
  如果用Video for Window方式开发过视频捕获程序,就会知道要在一个视频流上放一个框不是一件容易的事——任何控件往上一放,只要一连接视频,它就会消失。传统的办法是放一个Timer,在OnTimer事件中不停地调用API直接写屏画框。这种方式控制起来比较复杂,常常会由于interval设置得不当或因为机器性能的差异,出现取景框拖动时的轨迹残留与闪烁现象。在DSPack中可以用DSVideoWindowEx2来代替VideoWindow,因为它有Canvas,而且可以把视频输出到任何有Handle的控件上。如何利用它的这一特性来做可以移动的取景框,可以参考DSPack自带的一个例子(在Dspack'tDemoskDSVideoWindowEXkPlayWin中)。其实,用第二种方法也不简单。更简单更直接的办法是可以在SampleGrabber的OnBuffer事件中,利用其GetBitmap方法,将视频流导向到一个普通的Image上,而在一个\romage上,可以想放什么就放什么,控制起来很方便。因为窗口上没有必要放两个一样的视频,所以把VideoWindow的高和宽都设置成了0。这是个典型的懒人懒办法,其它副作用没发现,只是多了个Image。
  (4)视频设备的属性设置
  有时候连接到程序中的视频设备并没有工作在想要的模式中,或者为了利用它们自带的一些功能,来改善画面的质量,而又想在程序中直接调出如图4所示的设置窗口时,就需要用到DsUtil的HaveFilterPropertyPage()、ShowFilterPropertyPage()和ShowPinpropertyPageO了。
  

  
  4 结束语
  
  本文对“数码摄像”的主要功能(6种)作了介绍,并描述了如何实现一个最基本的数码摄像应用过程,但在实际中要考虑的因素问题还有很多,如:错误控制、自适应视频流的大小、允许视频的缩放、照片的存储控制、操作人员的权限控制、头像的自动切割等等。
其他文献
摘要:分析了目前中小企业信息化需求,在此基础上,设计了适应中小企业个性需求的信息化解决方案。应用文中所提出的平台架构,可以快速构建出相应的应用系统。  关键词:中小企业;信息化;Web服务;.NET    0 引言    信息技术的广泛应用,使得信息在以计算机技术为主导的自动化、网络化管理中成为生产与交换的重要资源。虽然,新的信息服务企业不断出现,还产生了一些新的服务模式和形态,但由于自身特点的限
期刊
摘要:通过论述制造网格资源管理和计算经济的特点,指出计算经济可以适应制造网格资源管理的特征和需求:提出了一种基于计算经济的制造网格资源管理框架,强调以经济为基础合理分配有限的资源,为不同服务质量需求的应用提供服务,提高资源的使用效率。此管理框架采用层次模型。文章详细论述了各层的功能,并讨论了该框架中的资源发现模式和交易模式。  关键词:制造网格;资源管理;计算经济;层次模型    0 引言    
期刊
摘要:计算机系统的补丁管理已经成为计算机系统安全的一个重要组成部分。在现有技术下,如何完整、规范地为需要严格与Internet隔离的内联网计算机用户分发和安装补丁是一个较为突出的问题。文章在微软免费的WSUS(Windows Server Update Services)服务基础上,开发出一套基于Windows平台的内联网补丁管理系统,弥补了WSUS系统的不足,提出了一种解决该问题的方案,并已经在
期刊
摘要:简要介绍了农村劳动力技能培训系统的UML分析设计,给出了系统的用例图、总体结构图和类图,并对部分系统的动态行为用顺序图和状态图进行了描述。该系统已投入实际运行,效果良好,对同类软件的开发具有参考价值。  关键词:农村劳动力技能培训系统;UML;用例图;类图    0 引言    农村劳动力技能培训是将农村部分富余劳动力通过培训和岗前培训转移到非农领域就业,该工作主要是以政府推动、学校主办、部
期刊
摘要:服务器控件是ASP.NET的一个重要组成部分,它为用户快速开发Web应用程序提供了支持。文章介绍了服务器控件数据绑定组件的创建及获取数据的过程,详细阐述了通过执行SQL语句将数据绑定到服务器控件的三种方法及它们在Code-behind页面中的调用方式。这种基于组件的开发方式使编程模块化,提高了开发效率,保证了应用程序的质量和可维护性。  关键词:ASP.NET;服务器控件;数据绑定;组件  
期刊
摘要:CommonKADS是支持结构化知识工程的方法。它为开发一个基于知识的系统提供了一套完整的方法框架。文章介绍了CommonKADS知识工程方法,并应用该理论方法研究了知识工程的需求分析过程和知识模型建模技术。结合对当前大学外语教学现状的分析和运用网络教育来支持大学外语教学的设想,建立了相关的学习评价系统模型,为网络外语教学系统的进一步开发做出了积极的探索。  关键词:知识工程;CommonK
期刊
摘要:XScale体系结构以高性价比、低功耗等特点已被广泛应用到智能手机、PDA和网络产品中。文章着重分析了XScale体系结构的特性,并针对该体系结构详细介绍了在开发过程中可能使用到的与运算、处理器以及编程相关的优化策略。  关键词:嵌入式处理器;XScale;超级流水线;优化策略    0 引言    随着计算机多媒体技术及无线通信技术的发展,嵌入式系统的应用已成为生活中不可或缺的部分。不同于
期刊
摘 要:块匹配运动估计算法是实时视频编解码技术的研究重点。为降低视频编码中运动估计的计算复杂度,考虑到现实序列运动矢量的分布存在方向性,文章提出了基于块匹配的自适应快速运动估计算法。该算法在运动估计的初始阶段,利用相邻宏块间的空间相关性来预测初始搜索点的位置,使搜索起点更接近理想的最优匹配点;在搜索过程中引入具有方向特征的非对称十字形搜索模型,加快了搜索速度。实验结果表明该算法具有很好的性能。  
期刊
摘 要:在全球数字化浪潮的影响下,高等学校数字化校园建设受到广泛的重视,各高校在中国教育科研网(CERNET)建设的强力推动下,正从各个侧面接触数字化校园建设这个主题。校园“一卡通”管理系统已被很多高校采纳为校园综合管理系统的平台之一,同时VLAN作为新兴的网络技术,因其灵活的特性、简便的使用方式,在校园网络中得到了广泛应用。文章主要讨论了在校园网络环境中如何利用VLAN技术低成本地构建专网系统,
期刊
摘 要:针对我国中小软件企业目前的发展状况及特点,以提高软件质量、降低成本、加强产品开发的可延续性、增加客户满意度为目标,在深入研究和探讨软件成熟度模型(CMM)的基础上结合成功案例,论述了一个基于CMM的ERP信息平台实施框架。框架对KPA做了适当的裁减,定义了7个关键过程域并设置了4个工作组,以加强软件过程的可控性和透明度并进行效率分析。最后指出,在CMM实践中应该注重创新。  关键词:CMM
期刊