青岛大学本科生毕业论文(设计)
投影。
以下为PCA算法实现的过程图,如图4.4:PCA算法实现过程。
读取待训练的图将图像数据读入指定的矩阵 平均图像的求取 主成分求解获得特征脸空间 待识别图像投影 欧氏距离的求解 邻近图像寻找 识别结果 协方差矩阵的求解 协方差矩阵特征值特征向量的求解 图4.4 PCA算法实现过程
20
青岛大学本科生毕业论文(设计)
第五章 人脸检测Android系统实现
本文所做的关于人脸系统实现是基于Android平台编程实现的,主要是是基于Java程序实现,同其他编程软件一样,Android程序的实现也是在搭建好的平台上建立新的工程实现的。
5.1 新建工程
首先在新打开的eclipse下,选择菜单file->new 进入如图5.1新建文件界面:
图5.1 新建文件图
点击后进入如图5.2输入工程名界面:
21
青岛大学本科生毕业论文(设计)
图5.2 输入工程名
在application name中输入工程名:AndroidFaceDetection,之后点击next,进入下面界面,如图5-3新建文件图下一步 文件存储空间:
图5.3 文件存储空间
22
青岛大学本科生毕业论文(设计)
之后一直点击next即可,直到出现finish按钮,新工程及建立起来,可以编写程序了。程序编辑完之后程序都存在src文件夹下,我们点击可以看到自己文件下的程序包含几个程序。本文涉及的程序src下主要有2个程序:myimageview.java、tutorialonfacedetect.java。分别是:图像视图、人脸检测程序。如图5.4 工程包含文件:
图5.4 工程包含文件
5.2 重要程序段及设置
5.2.1 应用界面设计程序
在众多的屏幕应用界面给自己的app设置一个合适名字,方便寻找,能直观明白的看出此app的作用,这是基于程序设置实现的,此程序存在于androidmanifest.xml 中,本文将自己的app名字设为:TutorialOnFaceDetect。程序段如下:
android:icon=\
android:label=\
android:name=\ android:label=\
23
青岛大学本科生毕业论文(设计)
5.2.2 界面启动程序
通常程序开始时,我们会载入照片,来作为app启动时的初始界面,并开始进行检测,下面就是我们用的程序段(仅是段程序):
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // LayoutParams.WRAP_CONTENT)); setContentView(R.layout.main);
mIV = (MyImageView) findViewById(R.id.iv_no); idetifyButton = (Button) findViewById(R.id.indetify); selectButton = (Button) findViewById(R.id.select); idetifyButton.setOnClickListener(new OnClickListener()
//setContentView(mIV,newLayoutParams(LayoutParams.WRAP_CONTENT,
mIV.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.face3)); 为使得欢迎界面更加的美观也可以定义启动欢迎字符定义程序启动欢迎字符串和系统程序名字符串。实现代码如下:
5.2.3 创建包
创建包package cliu.TutorialOnFaceDetect
添加一个通用的Android Activity:TutorialOnFaceDetect import android.media.FaceDetector;
public class TutorialOnFaceDetect extends Activity {
private MyImageView mIV;//引用了facedetector
mIV.invalidate();
super.handleMessage(msg);
public void handleMessage(Message msg) {
执行父类的消息方法
super.onCreate(savedInstanceState);
调用父类的onCreate构造函数savedInstanceState是保存当前Activity的状态信息 mIV = new MyImageView(this);
setContentView(mIV,new
LayoutParams(LayoutParams.WRAP_CONTENT,
24