手机照相对战嵌入式课程设计报告_第1页
手机照相对战嵌入式课程设计报告_第2页
手机照相对战嵌入式课程设计报告_第3页
手机照相对战嵌入式课程设计报告_第4页
手机照相对战嵌入式课程设计报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、本科学生课程设计任务书课程设计题目嵌入式系统课程设计学院计算机学院专业计算机网络工程年级2008已知参数和设计要求:1、 通过嵌入式系统课程设计,了解使用底层api访问手机硬件及手机上的各种传感器。2、 掌握获取手机上电话、短信、摄像头等各种功能的编写。.3、 掌握利用android平台人脸识别功能的使用。要求每组学生(3-4人/组)设计一套android手机对战游戏。游戏进行时,通过使用手机摄像头拍照捕捉人脸,记录成功捕捉并识别人脸的次数。要求学生独立完成系统的功能设计和实现,使所实现的系统可以能够包含主要的内容要求,并要求学生必须在报告中明确具体分工情况。学生应完成的工作:分组 3-4人/

2、组。语言:java。 内容:android手机对战游戏开发。包括但不限于:1) 使用android手机平台摄像头功能的实现;2) 使用android平台人脸识别功能的实现;目前资料收集情况(含指定参考资料):1) android应用开发揭秘 杨丰盛 机械工业出版社 2010年3月2) android核心技术与实例详解 吴亚峰 电子工业出版社 2010年10月课程设计的工作计划:1需求分析(说明系统目的,要求,操作流程,开发工具与开发平台)2总体设计(描述系统功能,系统架构,模块化分)3详细设计(建立系统的数据结构,协议结构,数据流程图)4系统实现编码(用所选开发工具完成应用系统)课程设计任务分

3、工:李健:人脸识别函数(该函数并非调用,是自己原创)黄进:手机摄像功能调用,设计报告王博君:sd卡文件操作,设计报告任务下达日期 2011 年 6 月 20 日完成日期 2011 年 6 月 24 日指导教师 (签名)学 生 李健,黄进,王博君 说明:1、学院、专业、年级均填全称,如:光电工程学院、测控技术、2003。2、本表除签名外均可采用计算机打印。本表不够,可另附页,但应在页脚添加页码。正文目录摘要及关键词61 需求分析7 1.1系统目的7 1.2 系统要求7 1.3操作流程7 1.4 开发工具与开发平台. .82 总体设计. . . . . . . . . . . . . . . .

4、. . .8 2.1 系统功能描述.8 2.2 系统模块划分10 2.3 系统程序流图103 详细设计113.1系统数据结构11 4系统实现编码12 4.1 图像建模函数.12 4.2 摄像功能函数调用.13 5 测试结果 . . 16 6 实验总结 . . . 177 参考文献 . . . 17摘要随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。进入20世纪90年代,嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。android是基于linux开放性内核的操作系统,是google公司在2007年11月5日公布的手机操作系统。目前已获得大部分市场。本次嵌入

5、式课程设计,要求使用java语言基于android平台完成一个手机对战游戏开发,主要要完成利用摄像头获取照片,然后对照片进行人脸识别,并统计识别出的人脸的个数并通知用户。通过完成此次课程设计,我们了解了使用底层api访问手机硬件及手机上的各种传感器,掌握获取手机上电话、短信、摄像头等各种功能的编写。同时,我们还自己设计了人脸识别函数以及计分函数,完成游戏胜负的判定。整过过程,在eclipse集成开发环境中编写程序代码,利用android模拟器进行调试测试。关键词:android 底层api 传感器 人脸识别 一.需求分析1.1 系统目的本系统要求使用java语言基于android平台完成一个对

6、战游戏开发,主要要完成利用摄像头获取照片,然后对照片进行人脸识别,并统计识别出的人脸的个数并通知用户。1.2 系统要求1. 获取摄像头详细信息和图片信息。2. 对图片信息进行人脸识别。3. 如果识别成功则记录相应分数,表示“击中”。4. 游戏结束根据分数高低结算游戏。1.3 操作流程进入游戏界面如下:点击确定,开始摄像头,转到下一界面:点击计算结果,获得结果:1.4 开发工具与开发平台开发工具:使用eclipse集成开发环境,并在其中安装adt开发工具。开发平台:android开发平台。二.总体设计2.1 描述系统功能利用手机的摄像头,进行该多人对战游戏。玩家利用手机摄像头捕捉对方脸部信息,并

7、拍照存档于sd卡中。照片的文件名以“人脸个数+当前系统时间”进行命名,以避免重复。系统分析照片中捕捉到的人脸个数,调用相应的计分函数,进行计分统计。最后通过分数高低,决定玩家的胜负。系统中设定的计分函数为f(x)=x2 。2.2系统功能模块划分拍照对战游戏拍照照片存储识别计分自 动 调 焦设 定 拍 照 键sd 卡 的 判 定文 件 命 名 规 则人 脸 识 别计 分 规 则 设 计人脸识别并计分显示是否继续开始起始页拍摄照片sd卡空间判定sd卡是否存在显示照片等待识别请插入sd卡请删除一些内容返回结束nynyyn2.3 系统程序流程图三.详细设计3.1 系统数据结构public class

8、gameragame extends activity /* called when the activity is first created. */camera camera; /cameraprivate camerapreview preview; /camera viewprivate date today; /datetime private string filename; / file nameprivate simpledateformat sdf=new simpledateformat(yyyymmddhhmmss);private button surebtn; /su

9、re buttonprivate imageview textview; public class photoview extends activity private static imageswitcher mswitcher;private static button returnbutton;private static button nextbutton;private static button resultbutton;private static list pholist;private string newfilepath=;static list picfiles=new

10、arraylist();private imageview imageview;private imageview imageafter;private static int picid=0;private string path;private bitmap sourcebmp;private byte data;int width;int height;int num;/读取图像文件private boolean facemodel(int cr,int cb) final double cx= 114.38; /cb的系数常量 final double cy=160.02;/cr的系数常

11、量 final double theta= 2.53;/角度常量 final double ecx=1.60;/x轴线和y轴线的两个常量 final double ecy=2.41; final double a=25.39;/长轴 final double b=14.03;/短轴 final double judge=0.5;/相似度常量 /计算得到x轴数值 double x = math.cos(theta)*(cb-cx)+math.sin(theta)*(cr-cy); /y轴数值 double y = -math.sin(theta)*(cb -cx)+math.cos(theta)

12、*(cr-cy); /计算离心率 double temp = math.pow(x-ecx,2)/math.pow(a,2)+math.pow(y-ecy,2)/math.pow(b,2); /如果满足要求返回真,否则假 if(math.abs(temp-1.0)judge) return true; else return false; 四.系统编码实现4.1图像建模函数/图像建模 private bitmap test(bitmap bmp) width=bmp.getwidth(); height=bmp.getheight(); int r,g,b=0; int pixel=new i

13、ntwidth*height; flag=new booleanheightwidth; bmp.getpixels(pixel, 0, width, 0, 0, width, height); for(int i=0;iheight;i+) for(int j=0;jwidth;j+) flagij=false; for(int i=0;iheight;i+) for(int j=0;j16)&0xff; g=(pixeli*width+j8)&0xff; b=pixeli*width+j&0xff; if(r95&g40&b20) if(math.abs(r-g)15|math.abs(r

14、-b)15|math.abs(g-b)15) if(math.abs(r-g)15&rg&rb) flagij=true; for(int i=0;iheight;i+) for(int j=0;jwidth;j+) if(flagij=true) r=g=b=255; else r=g=b=0; pixeli*width+j=0xff000000|(r16)|(g8)|b; bmp.setpixels(pixel, 0,width, 0, 0, width, height); return bmp; 4.2摄像功能函数调用class camerapreview extends surface

15、view implements surfaceholder.callback surfaceholder holder;public camerapreview(context context) super(context);/ todo auto-generated constructor stubholder=this.getholder();holder.addcallback(this);holder.settype(surfaceholder.surface_type_push_buffers);overridepublic void surfacechanged(surfaceho

16、lder holder, int format, int width,int height) / todo auto-generated method stubtrycamera.parameters parameters=camera.getparameters();/parameters.setpicturesize(width, height);parameters.setpictureformat(pixelformat.jpeg);if(getwindowmanager().getdefaultdisplay().getorientation()=0)parameters.setpr

17、eviewsize(height,width);elseparameters.setpreviewsize(width, height);parameters.setpicturesize(1024,786);camera.setparameters(parameters);camera.startpreview();camera.autofocus(new autofocuscallback()overridepublic void onautofocus(boolean success, camera camera) / todo auto-generated method stubif(

18、success);catch(exception e)overridepublic void surfacecreated(surfaceholder holder) / todo auto-generated method stubcamera=camera.open();trycamera.setpreviewdisplay(holder);catch(ioexception e)camera.release();camera=null;overridepublic void surfacedestroyed(surfaceholder holder) / todo auto-genera

19、ted method stubcamera.stoppreview();camera.release();camera=null; 4.3 sd卡文件操作private void checkmystorage() if(environment.getexternalstoragestate().equals(environment.media_mounted) if(new file(/sdcard).canread() file file=new file(sdcard/fatalityupload); if(!file.exists() file.mkdir(); file=new fil

20、e(sdcard/fatalityupload/fatality); file.mkdir(); else new alertdialog.builder(this).setmessage(检查到没有存储卡,请插入手机存储卡再开启本应用).setpositivebutton(确定, new dialoginterface.onclicklistener() overridepublic void onclick(dialoginterface dialog, int which) / todo auto-generated method stubfinish();).show(); private static list readfiles(string path)file dir=new file(path);file files=dir.listfiles();if(files!=null)for(int

温馨提示

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

评论

0/150

提交评论