package com.zyq.activity;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.Paint.Style;
import android.media.FaceDetector;
import android.media.FaceDetector.Face;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class PersonFaceActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); Log.i("huxun", "test ok"); } private class MyView extends View{ private int imgWidth,imgHeight; private int numberFace=5; //最大检测的人脸数 private FaceDetector faceDetector; //人脸识别类的实例 private FaceDetector.Face[] faces; //存储人脸的数组变量 float eyeDistance; //两眼间的间距 int numberOfFaceDetected; //实际检测的人脸的数量 Bitmap bitmap; public MyView(Context context) { super(context); //创建位图工厂选项对象 BitmapFactory.Options bitmapFactoryOption=new BitmapFactory.Options(); //设置位图最佳配置 bitmapFactoryOption.inPreferredConfig=Bitmap.Config.RGB_565; //将读到的图片按选项对象进行解码 bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.test,bitmapFactoryOption); //获取图片宽度 imgWidth=bitmap.getWidth(); //获取图片高度 imgHeight=bitmap.getHeight(); faces=new FaceDetector.Face[numberFace]; //创建人脸解码对象 faceDetector=new FaceDetector(imgWidth, imgHeight, numberFace); //到图片中搜索人脸 numberOfFaceDetected=faceDetector.findFaces(bitmap, faces); } @Override protected void onDraw(Canvas canvas) { canvas.drawBitmap(bitmap, 0,0,null); //构建画笔 Paint paint=new Paint(); //设置画笔颜色 paint.setColor(Color.YELLOW); //画线条 paint.setStyle(Style.STROKE); //设置线条的宽度 paint.setStrokeWidth(3); for (int i = 0; i < numberOfFaceDetected; i++) { Face face=faces[i]; PointF pointF=new PointF(); //获得人脸中点位置 face.getMidPoint(pointF); //获得两眼间距 eyeDistance=face.eyesDistance(); //画图 canvas.drawRect((int)(pointF.x-eyeDistance), (int)(pointF.y-eyeDistance),(int)(pointF.x+eyeDistance),(int)(pointF.y+eyeDistance),paint); } } } }