2024年1月5日发(作者:)

总第254期2010年第12期计算机与数字工程Computer&DigitalEngineeringV01.38No.12177基于PB利用摄像头批量采集照片系统的实现+郭东恩贾玉珍王绪宛(南阳理工学院软件学院南阳473000)摘要目前,大量数码照片的采集在各方面有广泛的应用,使用常用的摄像头结合数据库技术进行批量数码照片的采集,可以降低成本,提高效率,解决现有数码照片采集中的一系列问题。介绍了一种使用PowerBuilder工具开发的基于摄像头和数据库技术实现的批量照片采集方法,实现了快速大批量的照片采集,解决了目前照片采集方式存在的问题,满足大量照片采集的需要,提高了工作效率、节约了时问和成本。该方法在考试系统的考生照片采集中进行了应用,取得了较好效果。关键词考试系统;照片采集;摄像头;数据库;中图分类号TP311.133.1DesignandImplementationofPhotoCollectionSystemforWebcamBasedJiaYuzhenonPBGuoDong’enWangXuwan(SchoolofSoftwareNanyangInstituteofTechnology,Nanyang473000)AbstractAlargenumberofdigitalphotoscollectingapplyinallaspects,useingcanacorrllnonflcameraanddatabasetech—seriesofithbulkcollectionofdigitalphotos,younologywexistingreducecosts,improveefficiencyandsolveaproblemsinthedigitalphotocollection.ThispaperintroducescurrentmethodofphotocollectionbasedonwebcfllTlanddatabasetechnolo—gY,solvedtheeetedtheneedsofproblemsandmaberofphotographscollected,imlargenumprovedtheworkingeffi—re-eciency,savingtimandcOSt.Thismethodisappliedinthestudent’sphotocollectioninexaminationsystemachievedgoodsuits.ordsKeyWClassNuml冶rexaminationsystem,database,photocollection,webcamTP3】】.】33.11引言随着计算机信息技术、网络技术和软件技术的要手工记录照片与人员对应关系,照片导人计算机后需要手工重命名,大批量处理速度慢且容易出错。照片扫描分割要求考生上交照片统一手工扫描、分割和处理。存在的主要问题:上交照片质量和背景不一样,处理麻烦;大批量手工扫描、分割和命名效率低,且易出错[3~4]。针对目前照片采集中存在的问题,采用摄像头结合数据库技术,制作了一个用于考试系统中考生照片采集系统,根据数据库中记录的考生信息进行照片采集,采集后直接保存到数据库中,在考生考不断发展和完善,数码照片的采集和处理越来越普遍。比如为防止替考而在各类考试系统中进行的考生照片的采集,人事档案中的数码照片采集等[1~2|。目前照片采集主要有现场数码拍照和照片扫描分割两种方式,这两种方式都存在一些不足。现场数码拍照是由专业摄影师对人员现场拍照。存在的主要不足:对摄影技术有较高要求,需收稿日期:2010年6月12日,修回日期:2010年7月25日作者简介:郭东恩,男,硕士,讲师,研究向:计算机技术,软件系统分析及程序开发。

178郭东恩等:基于PB利用摄像头批量采集照片系统的实现第38卷试时显示到考试窗口,方便监考老师核对考生信息。将繁琐的重复性劳动予以自动化,有效地降低了工作人员的劳动强度,提高TI作效率Es]。2系统基本功能要制作批量照片采集系统,必须实现下面基本要求。1)根据条件显示考生信息,根据选择的考生信息进行照片采集;2)能对摄像头进行参数设置,能控制摄像头打开和关闭;3)能显示摄像头视频,控制摄像头拍照,并可以对照片进行简单剪裁并保存;4)能调入电子照片,进行剪裁后保存。3具体实现1)建立考生信息库,生成考生基本信息数据考生信息涉及的基本表及其字段如表1所示,照片字段使用ole类型[5’10|。该基本数据用于照片采集时考生信息的定位,所以必须事先完善。表l考生基本信息表及数据2)使用PB开发工具,设计一个登录窗口,以班级为单位进行考生信息采集,如图1所示。可以通过专业名称和班级列表选择专业和班级,在密码框输人该班级管理员密码,按“登录”按钮,即可进入照片采集主窗口,主窗口即可显示该班级考生信息。3)设计一个照片采集主窗口,包含考生基本信息栏、视频栏、照片剪裁栏、最终照片显示栏,包含基本的操作按图1登录窗口钮:“拍照”、“确定”、“开启摄像头99、16关闭摄像头”、“格式设置”等,可以实现拍照,剪裁照片,保存照片等功能。主窗口如图2所示。(1)考生基本信息栏,显示考生考号、姓名、班级等基本信息,使用数据窗口控件实现。该数据窗口使用考生基本信息表作为数据源,并设置班级作为检索参,通过登录窗口成功登录后,记录班级信息,打开照片采集主窗口时,作为参传递给据窗口,显示该班级考生基本信息。同时,为了把考生和照片采集对应起来,在数据窗口的itemfo—cuschanged事件中编写代码,记录选中的考生学号信息,并从考生基本信息表中调取照片,如果已经有照片,则显示到最终照片显示栏,表明该考生照片已采集。图2照片采集主窗口(2)视频栏,显示摄像头视频,使用图片框实现。当点击“开启摄像头”按钮时,调用WIN32函数capCreateCaptureWindowA在图片框上创建一个视频窗口,显示摄像头视频[3,7~8]。“开启摄像头”按钮核心代码如下:stringlpszNameulongllll=handle(p-2)lpszName=摄像头界面…’lhand=eapCreate(;aptureWindowA(1pszName,262144+12582912+1073741824+268435456。一5,--30,320,240,ll,0)iflhand<>0thensend(1hand。WMCAPSETCALLBACKVm似)_sTREAM,0,O)send(1hand,WM—CAP—SET—CALLBACK—ERROR,0,O)send(1hand,WM—CAP—SET—CALLBACK—STA—TUSA,0,O)send(1hand.WMCAPDRIvERCONNECT,0,O)send(1hand.WMCAPSETSCALE,1,O)send(1hand。、^,MCAPSETPREVIEWRAITE,66,0)send(1}land。WMCAPSETOVERLAY,1,O)send(/hand,WMCAPSETPREVIEW,1,O)endif(3)“拍照”按钮,根据显示的摄像头视频,使用WIN32函grabimage抓拍照片[8’10]。为了显示抓拍照片,借助于0I。YMPUS公司OCX控件和柯

2010年第12期计算机与数字工程coninIit;达公司的OCX控件,生成I临时文件,并显示到ole控件中,以便进一步剪裁处理。这里用到的两个公司的控件,可以从网上下载,注册后引用。(4)照片剪裁栏,使用ImageKnile32Trialelsemessagebox(”错误提示”,sqlceusqlerrtext)endifENDIFole控件,对抓拍照片进行适当的剪裁。考虑到(5)“调入”按钮,可以把现存的电子照片,调入到图片剪裁栏中,进行剪裁处理,以满足对部分考生提供的电子照片进行处理。剪裁方便,在该ote控件图3照片剪裁窗口中显示一个虚线框‘6~7j,如图3所示。该框是通过调用该控件本身的一些方法实现的,该虚线框的大小可以通过参数进行设置,为了设置方便,把对应参数写入初始化参数文件中,根据需要手工进行调整。具体设置如下:cut—feet.r—left=integer(profilestring(cutini,”zp”,”left”,””))//eutini是初始化参数文件对应的变量cut—rect.r—top—integer(profilestring(cutini,”zp”,”top”,””))cut—rect一一width—integer(profilestring(cutini,”zp”,”width_jd”,””))cut—rect.rheight—integer(profilestring(cutini,”zp”,”height_jd”,””))qgsz.ttop—cut_rectr_topClgsz.1left—cut_rect.r_leftcut_reeLr—w—width=unitstopixels(ole~1.width,xunit—stopixels!)cut_rect.r—w—height=unitstopixels(ole—1.height,yunit—stopixels!)该虚线框可以使用鼠标拖动,选择合适的部分,在鼠标mousedown、mousemove和mouseup事件中编写相应代码即可。选中部分固定后,点“确定”按钮,即可把选中的图像,显示到最终照片栏,并在磁盘生成以考生学号为文件名的照片,同时保存到数据库中。“确定”按钮的核心代码如下://打开生成的照片文件,filename代表照片文件完整路径li_filenum—FileOpen(filename,StreamMode!)IFli_filenum<>一lTHEN//读取照片文件到blob变量totbFileRead(1i_filenum,tot_b)FileClose(1i_filenurn)//显示最终照片到图片自:p_3.SetPicturc(totb)//保存照片到数据库UPDATEBLOBstudentinfoSETphoto=:tot—bWHEREstuid。:ls—stuidusingsqlca;ifsqlea.sqlcode--0then(6)“格式设置”按钮,可以对摄像头本身的一存在的问题1)由于摄像头质量不一样,采集到的照片质2)照片的剪裁处理功能过于简单。3)对现有电子照片进行处理时,如果照片过结语随着计算机信息技术、网络技术和软件技术的[3’5]。PB工具,使用成本较低的摄像头结合数目中进行了利用,收到了较好的效果。参考文献1]Atkins,B.CAdaptivephotocollectionpagelayout[C]//2004InternationalConferenceonImageProcess—ing(ICIP2004),2004:1125~11272-IAlexanderSibiryakov.Photocollectionrepresentationbasedonviewpointclustering[C]//ConferenceonE—lectronicImagingandMultimediaTechnology,Bei—jing,2007:1112~11153]王集成.基于Ⅵw图像采集应用[J].计算机与数字工程,2009,37(7):136--1394]鲁朋.照片采集技术在考试信息化中的应用[J].中国信息化,2005(1):925]马俊峰,郑磊琦.基于VB.Net的批量采集照片系统的实现[J].福建电脑,2008(7):1506]江兆银.基于Delphi视频采集个人照片的实现[J].宁波职业技术学院学报,2008,12(5):91~95些参数进行设置,比如成像大小、亮度、对比度等。4量也会受到影响。大,调入后处理比较麻烦。5不断发展和完善,照片采集,是目前好多项目中都要提供的功能,如:人事管理、学籍管理、考试报名、证卡制作、住宿管理等都需要大量照片采集本文利用据库技术进行考生照片采集,既经济又方便。对于其他系统中的照片采集,只要针对相应的环境,对本文所提的方法略加修改,即可实现照片采集功能。该照片采集系统在南阳理工学院考试系统项[[[[[[

郭东恩等:基于PB利用摄像头批量采集照片系统的实现].北[7]于洪文,蔡毅.PowerBuilder9.0案例开发篇[M京:清华大学出版社,2004f83朱友芹.新编WindowsAPI参考大全[M3.北京:电子工业出版社,2000第38卷[9]王卫锋,李强.人脸识别考勤系统中照片采集过程的分析与实cA[J].新乡教育学院学报,2008,21(2):82~84Elo]陈瑶.刘洋Windows环境下实时视频捕捉、压缩的实现口].沈阳化工学院学报,2004(1)楚帑出昂{!铆;{场产出希出乖出希出档稍希出牢娃锯池i池希出乖出乖出乖出示出帘{!#乖《铂沾希也希出看过5乖≈!铂畦!;尔{!钎;延;术延锯;§2尔{!;牢{!;尔也乔毡碲出带皂前《镅砖场莽毡碲过钥趟铂姑乖出衣出术(上接第161页)供商为ServerAgent,其提供了一个集成搜索服务,它接收用户的请求,然后把该搜索请求分发给两个以Web服务的方式提供搜索服务的提供商Pro-viderA和ProviderB,最后把它们的返回信息综合起来,以统一的方式提供给用户。用户可以根据这些信息作出决策,如根据价格排序挑选出合适的商品。ProviderA和ProviderB要求的搜索请求格式不同,得到的搜索结果格式也不同,分别对应不同的ⅪⅥLSchema,为了统一这些不同的格式,ServerAgent使用XMLSchema定义了一个标准的搜索请求和应答。在调用不同的搜索服务时先进行数据转换,获得特定搜索服务所要求的数据格式,对返回的结果也要进行相反的处理,最后得到的结果才能进行汇总。这里以实现ProviderA搜索服务为例,说明ProviderA搜索处理服务的BPEL实现。穹胁eive接收用户标准搜索清求1lPr。ViderARequestI转换用户请求为ProviderA请求2l(1}≥]C。。o。n。s。t。ruct调用PmvlderA搜索服务3|印‰slructSlandardRcquestl转换ProvlderA结果为标准结果4l返回标准结果5I0Reply图5ProviderA搜索处理服务的流程服务流程的BPEL表示1)根据以上分析过程,明确ProviderA搜索处理服务的实现流程如图5所示。2)使用XMLSchema定义服务所需的数据类型。这里主要是标准的搜索请求和标准的输出结果。3)将上述流程映射为BPEL流程,确定用来描述这个流程的对应的BPEL元素。对于第一步“接收用户标准搜索请求”,对应于BPEL定义的Receive元素,等待接收用户的请求。第二步“转换用户请求为ProviderA请求”,使用BPEL的赋值元素(Assign)来实现对变量的赋值和转换。第三步“调用ProviderA搜索服务”,这正是BPEL中定义invoke元素的目的,用来调用相应的Web服务。第四步“转换ProviderA结果为标准结果”,同样可以使用Assign赋值元素来实现。最后一步为“返回标准结果给用户”,对应BPEL的reply元素。ProviderA搜索处理流程的BPEL表示如图6所示。5结语使用BPEL与SCA/SDO组合的方式实现SOA的应用开发,使得企业在以往基于面向服务的体系结构开发过程中所遇到的许多难题变得容易解决。SCA/SDO和BPEL是为解决服务构建和流程编排领域问题而呈现的当代SOA技术标准,这些规范提供统一服务的途径,大大降低了构建SOA构架的复杂性,很好地解决了在分布式网络环境中系统异构的问题,而且为业务流程的变更提供了很好的灵活性,为企业未来业务发展提供了良好的环境。参考文献[1]陈树鸿.基于SOA的企业应用集成的研究[D].天津:暨南大学硕士学位论文,2008:11~16[2]祁金华.下一代编程架构:SCA/SEX3/BPEL[J].软件世界,2006(17)[3]宋慧驹,马楠,吴志刚.SOA编程模型[J].信息技术与标准化,2007(11)[4]陈应东,王玉海,崔铁军.基于BPEL的空间信息服务设计与实现[J].地理信息世界,2008(1)[5]万露,杨国强.基于SOA和BPEL的业务流程管理研究与应用[J]。计算机与现代化,2009(2)[63道客巴巴一在线文档分享平台.BPEL实例教程[DB/OL].http://www.doc88.com/p-.html[7]林怀恭,聂瑞华,罗辉琼.基于SOA架构的服务集成技术的研究[J].计算机技术与发展,2009(7)[8]余浩,朱成,丁鹏.SOA实践一构建基于JavaWeb服务和BPEL的企业级应用[M].北京:电子工业出版社,2008