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;
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);
}
}
}
}
/** 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);
}
}
}
}