1、本科毕业论文(20 届)学生头像采集系统的设计与实现所在学院专业班级 计算机科学与技术学生姓名指导教师完成日期摘 要电子照片的采集和管理是高等学校实现信息化管理的重要方面,各高校每学期都有对学生电子照片采集的任务,设计高效的电子照片采集方法是学校数字化发展的必然要求,在分析电子照片采集的一般方法及其优缺点的基础上,提出将多设备集成,实现照片采集、加工、存储的新方法。本论文的头像采集系统以 USB 摄像头为硬件,利用 C# 语言 ,在 Visual studio2010 环境中编写,同时给出了详细的系统设计过程、部分界面图及主要功能运行流程,USB 总线以其使用方便、传输速度快、即插即用、通用性
2、强、扩展性好和性价比高等优点得到广泛应用,C# 语言具有易上手,好编写的特性,所以本学生头像采集系统具有易用性很强,成本低廉 ,没有环境限制,效率高等优点。关键词:电子照片,照片采集,USB 摄像头AbstractElectronic photo collection and management plays a key role in the realization of information management for colleges and universities. As application of students electronic photos is in great
3、demand in colleges and universities each semester, the design of an effective electronic photo collection system is an essential requirement for schools digitalized development. Based on the analysis of the general method of collecting electronic photos and its advantages and disadvantages, this pap
4、er proposes a new method of photo collecting, processing and storing with equipment integration.This papers image acquisition system based on USB camera hardware, using c # language, written in the Visual studio2010 environment, and gives the detailed system design process, part of the interface dia
5、gram and main function operation flow, the USB bus for its convenience, fast transmission speed, plug and play, strong commonality, good expansibility and high cost performance is widely used, the c # language is easy to fit in the characteristics of good writing, so this student image acquisition s
6、ystem has the usability is very strong, the cost is low, there is no limit to the environment, high efficiency, etc.Keywords: electronic photo,photo collection,USB camera.目 录1 绪 论 .11.1 系 统 开 发 的 背 景 .11.2 国 内 外 背 景 及 其 现 状 .11.3 主 要 研 究 目 标 和 研 究 内 容 .21.4 论 文 组 织 结 构 .22 系 统 开 发 及 相 应 配 置 .32.1 .N
7、et 简 介 .32.2 C#.32.3 visual studio2010 .42.4 摄 像 头 .52.5 C#捕 捉 摄 像 头 的 API 接 口 ( avicap32.dll) .63 系 统 分 析 及 可 行 性 .83.1 系 统 可 行 性 分 析 .83.2 系 统 需 求 分 析 .93.2.1 软 件 开 发 目 标 .93.2.2 系 统 功 能 需 求 .93.2.3 系 统 界 面 需 求 .93.3 系 统 开 发 的 原 则 .94 系 统 设 计 .114.1 系 统 的 设 计 思 想 .114.2 系 统 的 结 构 .134.3 系 统 的 功 能
8、.134.4 系 统 使 用 流 程 .145 系 统 功 能 的 实 现 .155.1 程 序 启 动 及 其 代 码 .155.2 开 启 相 机 与 关 闭 .175.3 相 机 拍 照 及 照 片 预 览 .185.4 照 片 的 保 存 及 学 生 信 息 .196 结 论 .22参 考 文 献 .23致 谢 .2411 绪论1.1 系统开发的背景当前多媒体计算机,信息高速公路和计算机网络是计算机信息科学的三个重要发展方向。它们相互联系、相互促进、共同发展,已经渗透到人们日常生活、学习、工作、娱乐等各个方面。计算机管理信息系统的普及,极大提高了管理水平和工作效率,在解决了传统的文字信
9、息计算机管理的同时,结合人像照片等信息进行的图文结合管理模式越显迫切,并逐渐提上了议事日程。在诸如人事管理、学籍管理、考试报名、证卡制作等需要大量录入人像照片的场合,一直来为照片的计算机录入问题所困扰。随着计算机技术的迅猛发展,全国各高校正快速实现信息化、数学化管理。在实现数字化管理的过程中,采集和管理学生电子像片是数字化发展的必然要求,同时也是实现数字化管理的薄弱环节。采集电子照片的常用方法是由专业摄影师对学生进行现场拍照,记录相机中照片与学生的对应关系,待拍摄完毕后,导入电脑并用图像处理软件修改成相应尺寸的照片,在摄像头应用普及的的条件下,出现了许多利用摄像头进行照片采集的研究,如全国英语
10、四六级考试报名、国家公务员考试报名中,就采用摄像软件进行照片采集。这种方式具有操作简单,便捷灵活的特点,生成的图像易于保存应用 1。1.2 国内外背景及其现状国外主要拟采用人脸检测技术来自动提取和规范头像,采用二维条码和数据库技术来自动命名照片。人脸检测及头像提取技术:采用人工智能和模式识别技术检测照片中人脸位置,并根据用户设置的参数以人脸为中心裁剪出符合要求的头像图片。二维条码和数据库命名技术:通过用户数据库信息直接命名所拍摄的照片,或将关键编码字段生成二维条码并通过自动解码来命名所扫描的照片。 目前国内照片采集主要有数码拍照和照片扫描分割两种方式。下面我们就这两种采集方式存在的问题给大家分
11、析一下:方式一:现场数码拍照,由专业摄影师对人员进行现场拍照,并记录相机中照片与人员的对应关系,拍摄完毕后导入电脑通过手工修改所拍照片的编号。主要存在的问题:1、照片命名速度慢且容易出错,采用数码相机拍照时往往需要辅助人员在旁边拿着花名册逐个点名并记录其在相机中照片的编号,拍摄完毕后还需要手工更改照片编号。2、对摄影师有较高技术要求。数码拍照时往往需要专业摄影师操作,根据人员高矮及天气状况实时调整坐姿和相机参数以保证所采集照片的规范性,一般非专业人士很难保证采集的照片整齐规范。3、需要将人员在固定时间集中拍摄,往往因为时间或地域原因无法实现,即使实现了也容易造成现场混乱,影响正常生产、教学秩序
12、。方式二:照片扫描分割,上交照片统一处理,将上交的照片整批扫描输入电脑,然后对扫描的图片进行手工分割裁剪和手工命名。存在的问题: 1、手工分割效率低,且不规范,速度和精度完全取决于个人因素,每小时处理的图像有限。2、手工命名速度慢,且容易出错,一旦出错很难查证。3、上交的照片原始质量和背景参差不齐,手工单张调整需要消耗大量时间 2。21.3 主要研究目标和研究内容随着我国综合国力的不断增强,教育水平的不断提高,我国大学生数量在逐年增加,越来越多的学生给各高校采集学生头像信息带来了不少困难,每年的大学外语四六级考试,研究生报名考试,公务员考试,计算机二级考试,会计证报名等考试,学校都要向考试办上
13、报考生的图像信息,而且要求电子图像的像素为固定值,大小不能超过 15kb 的以学生学号命名的 jpg 格式图像文件。这就意味着我们要在短时间内(一般 2-3 天)完成4000 人以上的图像采集。如果以传统的工作方式。用数码照相机进行拍照,再对生成的电子照片修改像素,压缩大小,重新以学号命名。这个过程所需的工作量是巨大的,不但很难在短时间内完成,而且也很容易在重命名时出现张冠李戴的错误,而且会花费学生和工作人员不菲的时间。可见传统的方式在现今科技高速发展的年代,办公信息数字化的趋势下是不可取的,本文所使用的是摄像机和电脑相结合利用图像采集软件获取考生图像的新方法,其大大提高了工作效率,在规定时间
14、内顺利完成了学生图像采集工作 3。本文要实现的基本目标和主要内容有一下几个方面:(1)学生头像采集系统能调用摄像头,并且显示摄像头所拍摄的视频信息。(2)学生头像采集系统对于摄像头所捕获信息,能够进行保存为照片格式。(3)学生头像采集系统对于拍摄的照片能够进行学生头像部位的截取。1.4 论文组织结构本论文分 6 章。第一章绪论,主要介绍系统发展的背景,及国内外现状。第二章主要对开发平台及语言.NET,C#介绍,以及对开发环境 VisualStudio2010 的介绍。第三章系统开发的可行性,目的,以及原则,并且对项目进行了详细的介绍。第四章写了系统的设计,详细的介绍了数据库的设计以及具体的流程
15、图。第五章系统的具体功能的实现,以及部分具体相关代码。第六章总结全文。32 系统开发及相应配置2.1 .Net 简介.NET 是 Microsoft XML Web services 平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。.NET 就是微软用来实现 XML,Web Services,SOA 和敏捷性的技术。对技术人员,想真正了解什么是.NET,必
16、须先了解.NET 技术出现的原因和它想解决的问题,必须先了解为什么他们需要 XML Web Services 和 SOA。技术人员一般将微软看成一个平台厂商。微软搭建技术平台,而技术人员在这个技术平台之上创建应用系统。从这个角度,.NET 也可以如下来定义:.NET 是微软的新一代技术平台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的。从技术的角度,一个.NET 应用是一个运行于.NET Framework 之上的应用程序。 (更精确的说,一个.NET 应用是一个使用.NET Framework 类库来编写,并运行于公共语言运行时 Common
17、Language Runtime 之上的应用程序。 )如果一个应用程序跟.NET Framework 无关,它就不能叫做.NET 程序。比如,仅仅使用了 XML 并不就是.NET 应用,仅仅使用 SOAP SDK 调用一个 Web Service 也不是.NET 应用。.NET 是基于 Windows 操作系统运行的操作平台,应用于互联网的分布式 4。2.2 C#C#是微软公司发布的一种面向对象的、运行于.NET Framework 之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员 Anders Hejlsberg 的最新成果。C#看起来与 Java
18、 有着惊人的相似;它包括了诸如单一继承、接口、与 Java 几乎同样的语法和编译成中间代码再运行的过程。但是 C#与 Java 有着明显的不同,它借鉴了 Delphi 的一个特点,与 COM(组件对象模型)是直接集成的。C#是一种安全的、稳定的、简单的、优雅的,由 C 和 C+衍生出来的面向对象的编程语言。它在继承 C 和 C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承) 。C#综合了 VB 简单的可视化操作和 C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET 开发的首选语言。并且 C#成为 ECMA 与
19、ISO 标准规范。C#看似基于 C+写成,但又融入其它语言如 Pascal、Java、VB 等。C#在设计者从 C+继承的可选选项方面比 Java 要广泛一些(比如说 struts),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能挤垮 Java C#还需要进化成一种开发者能够接受和采用的语言C# 将不可避免地崛起,在 Windows 平台上成为主角,而 JAVA 将在 UNIX、Linux 等平台上成为霸主,C+ 将继续在系统软件领域大展拳脚。非常有意思的是,这些语言的语法极其接近,因为 JAVA 和 C# 都是由 C+发展而来的。其他的开发工具当然还会在相当长4的时间
20、里继续他们的旅程,不过在市场份额上,将不可避免地受到冲击。 C#旨在设计成为一种“简单、现代、通用” ,以及面向对象的程序设计语言,此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种自动内存释放技术) 。软件必须做到强大、持久,并具有较强的编程生产力。此种语言为在分布式环境中的开发提供适用的组件开发应用。为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C 和 C+的程序员而言。对国际化的支持非常重要。C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大
21、型系统到特定应用的小型系统均适用 5。2.3 Visual Studio2010Visual Studio 是微软公司推出的开发环境。是目前最流行的 Windows 平台应用程序开发环境。Visual Studio 2010 版本于 2010 年 4 月 12 日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010 同时带来了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology),并且支持开发面向 Windows 7 的应用程序。除了 Micro
22、soft SQL Server,它还支持 IBM DB2和 Oracle 数据库。目前有五个版本:专业版、高级版、旗舰版、学习版和测试版。在一个组织中,应用程序生命周期管理(ALM)将牵涉到多个角色。但是在传统意义上,这一过程中的每个角色并不是完全平等的。Visual Studio Team System 2010 将坚持打造一个功能平等、共同分担的平台以用于组织内的应用程序生命周期管理过程。VS 作为微软.NET Framework 平台开发工具,无论易用性、功能性等各方面,是现时所有开发工具套件中最为出色的,而 VS 2010 更是微软抛离其他对手一个里程碑版本。微软官方确认 Visual
23、 Studio 2010 正式版将在 2010 年 4 月 12 日正式发布,这对软件业以及开发人员将产生重要影响。Visual Studio 是微软公司推出的、目前最流行的 Windows 平台应用程序开发环境。Visual Studio 2010 精心打造了云计算架构,使在线应用软件的开发及应用更为简洁;在敏捷开发中,Visual Studio 2010 把 Scrum 作为基本 Agile 开发模型,真正实现了方法论,这是 Visual Studio 的一大成就;Visual Studio 2010 搭配 Windows 7, Silver light 4,在 RIA 应用、Web 应用
24、上有较大切入,使 Web 应用达到一个新境界;Visual Studio 2010 加大了对多核并行运算的支持并且其中的 C+ IDE 增强,可更好支持 C+。顺应新的技术潮流,每年,业界内的新技术和新趋势层出不穷。通过 Visual Studio 2010,微软将为开发者提供合适的工具和框架,以支持软件开发中最新的架构,开发和部署。从 Visual Studio 的第一个版本开始,微软就将提高开发人员的工作效率和灵活性作为自己的目标。Visual Studio 2010 将继续关注并且显著地改进开发者最核心的开发体验。微软将继续投资于市场领先的操作系统,工具软件和服务器平台,为客户创造更高的
25、价值。使用 Visual Studio 2010,将可以在新一代的应用平台上,为你的客户创造令人惊奇的解决方案。客户将在不同规模的组织内创建应用,跨度从单个部门到整个企业。Visual Studio 2010 将确保在这么宽泛的范围内的应用开发都得到支持。5Microsoft Visual Studio 2010 采用拖曳式便能完成软件的开发。简简单单的操作便可以实现一个界面的生成。但拖曳的界面,也应当有相应的代码来实现功能。Microsoft Visual Studio 2010 支持 C#、C+ 、VB。 可以快速实现相应的功能。主要特点: 支持 Windows Azure,微软云计算架构
26、迈入重要里程碑。 助力移动与嵌入式装置开发,三屏一云商机无限。 实践当前最热门的 Agile/Scrum 开发方法,强化团队竞争力。 升级的软件测试功能及工具,为软件质量严格把关。 搭配 Windows 7,Silverlight4 与 Office,发挥多核并行运算威力, 创建美感与效能并重的新一代软件。 支持最新 C+标准,增强 IDE,切实提高程序员开发效率2.4 摄像头摄像头(CAMERA)又称为电脑相机,电脑眼,电子眼等,是一种视频输入设备,被广泛的运用于视频会议,远程医疗及实时监控等方面。普通的人也可以彼此通过摄像头在网络进行有影像、有声音的交谈和沟通。另外,人们还可以将其用于当前
27、各种流行的数码影像,影音处理。摄像头可分为数字摄像头和模拟摄像头两大类。数字摄像头可以将视频采集设备产生的模拟视频信号转换成数字信号,进而将其储存在计算机里。模拟摄像头捕捉到的视频信号必须经过特定的视频捕捉卡将模拟信号转换成数字模式,并加以压缩后才可以转换到计算机上运用。数字摄像头可以直接捕捉影像,然后通过串、并口或者 USB 接口传到计算机里。电脑市场上的摄像头基本以数字摄像头为主,而数字摄像头中又以使用新型数据传输接口的 USB 数字摄像头为主,市场上可见的大部分都是这种产品。除此之外还有一种与视频采集卡配合使用的产品,但还不是主流。由于个人电脑的迅速普及,模拟摄像头的整体成本较高,而且不
28、能满足 BSV 液晶拼接屏接口等原因,USB 接口的传输速度远远高于串口、并口的速度,因此市场 USB 接口的数字摄像头。模拟摄像头可和视频采集卡或者 USB 视频采集卡配套使用。摄像头(webcam)一般具有视频摄影/传播和静态图像捕捉等基本功能,它是借由镜头采集图像后,由摄像头内的感光组件电路及控制组件对图像进行处理并转换成电脑所能识别的数字信号,然后借由并行端口或 USB 连接输入到电脑后由软件再进行图像还原。摄像头的工作原理大致为:景物通过镜头(LENS)生成的光学图像投射到图像传感器表面上,然后转为电信号,经过 A/D2(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DS
29、P)中加工处理,再通过 USB 接口传输到电脑中处理,通过显示器就可以看到图像了。USB 具有传输速度快(USB1.1 是 12Mbps,USB2.0 是 480Mbps,USB3.0 是 5 Gbps) ,使用方便,支持热插拔,连接灵活,独立供电等优点,可以连接鼠标、键盘、打印机、扫描仪、摄像头、闪存盘、MP3 机、手机、数码相机、移动硬盘、外置光软驱、USB 网卡、ADSL Modem、Cable Modem 等,几乎所有的外部设备。62.5 C#捕捉摄像头的 API 接口(avicap32.dll)avicap32.dll 是 Windows API 应用程序接口相关模块,用于对摄像头和
30、其它视频硬件进行 A电影和视频的截取,部分 C#详细控制视频参数如下:WM_CAP_START= WM_USER=1024; / start of Unicode messagesWM_CAP_UNICODE_START= WM_USER+100; /开始 WM_CAP_GET_CAPSTREAMPTR= (WM_CAP_START+ 1) ; /获得 CAPSTR EAMPTRWM_CAP_SET_CALLBACK_ERROR= (WM_CAP_START+ 2) ; /设置回调错误WM_CAP_SET_CALLBACK_STATUS= (WM_CAP_START+ 3) ; /设置回调状态
31、WM_CAP_SET_CALLBACK_YIELD= (WM_CAP_START+ 4) ; /设置回调出产WM_CAP_SET_CALLBACK_FRAME= (WM_CAP_START+ 5) ; /设置回调结构WM_CAP_SET_CALLBACK_DEOSTREAM= (WM_CAP_START+ 6) ;/设置回调视频WM_CAP_SET_CALLBACK_WAVESTREAM= (WM_CAP_START+ 7) ; /设置回调视频波WM_CAP_GET_USER_DATA =(WM_CAP_START+ 8) ; /获得使用者数据WM_CAP_SET_USER_DATA =(WM
32、_CAP_START+ 9) ; /设置使用者数据WM_CAP_DRER_CONNECT =(WM_CAP_START+ 10) ; /驱动程序连接WM_CAP_DRER_DISCONNECT =(WM_CAP_START+ 11) ; /断开启动程序连接WM_CAP_DRER_GET_NAME =(WM_CAP_START+ 12) ; /获得驱动程序名字WM_CAP_DRER_GET_VERSION =(WM_CAP_START+ 13) ; /获得驱动程序版本WM_CAP_DRER_GET_CAPS =(WM_CAP_START+ 14) ; /获得驱动程序性能WM_CAP_FILE_S
33、ET_CAPTURE_FILE =(WM_CAP_START+ 20) ; /设置捕获文件的文件名WM_CAP_FILE_GET_CAPTURE_FILE =(WM_CAP_START+ 21) ; /获得捕获文件的文件名WM_CAP_FILE_SAVEAS =(WM_CAP_START+ 23) ; /另存文件为WM_CAP_FILE_SAVEDIB =(WM_CAP_START+ 25) ; /保存文件WM_CAP_FILE_ALLOCATE =(WM_CAP_START+ 22) ; /分派文件WM_CAP_FILE_SET_INFOCHUNK =(WM_CAP_START+ 24) ;
34、/设置开始文件WM_CAP_EDIT_COPY =(WM_CAP_START+ 30) ; /编辑复制WM_CAP_SET_AUDIOFORMAT =(WM_CAP_START+ 35) ; /设置音频WM_CAP_GET_AUDIOFORMAT =(WM_CAP_START+ 36) ; /捕获音频WM_CAP_DLG_DEOFORMAT =(WM_CAP_START+ 41) ; /1065 打开视频格式设置对话框WM_CAP_DLG_DEOSOURCE =(WM_CAP_START+ 42) ; /1066 设置对比度、亮度等。WM_CAP_DLG_DEODISPLAY =(WM_CAP
35、_START+ 43) ; /1067 打开视频显示对话框WM_CAP_GET_DEOFORMAT =(WM_CAP_START+ 44) ; /1068 获得视频格式 WM_CAP_SET_DEOFORMAT =(WM_CAP_START+ 45) ; /1069 设置视频格式 WM_CAP_DLG_DEOCOMPRESSION =(WM_CAP_START+ 46) ; /1070 打开压缩设置对话框WM_CAP_GET_STATUS =(WM_CAP_START+ 54) ; /获得状态WM_CAP_SET_SCROLL =(WM_CAP_START+ 55) ; /设置卷 WM_CAP_SEQUENCE =(WM_CAP_START+ 62) ; /次序,捕捉到文件 WM_CAP_SEQUENCE_NOFILE =(WM_CAP_START+ 63) ; /没有文件