android 人脸识别

来源:互联网 发布:javascript: 编辑:程序博客网 时间:2024/05/18 22:41

android的人脸识别目前为上(4.2)只能进行人脸的识别,而不能进行人脸的对比。

下面是具体代码

package com.example.facedetectdemo;import java.io.IOException;import android.app.Activity;import android.content.pm.ActivityInfo;import android.graphics.PixelFormat;import android.graphics.Point;import android.hardware.Camera;import android.hardware.Camera.CameraInfo;import android.hardware.Camera.Face;import android.hardware.Camera.FaceDetectionListener;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;public class AndroidCamera extends Activity implements SurfaceHolder.Callback{ Camera camera; SurfaceView surfaceView; SurfaceHolder surfaceHolder; boolean previewing = false; LayoutInflater controlInflater = null;  Button buttonTakePicture; TextView prompt;  final int RESULT_SAVEIMAGE = 0;    /** Called when the activity is first created. */   @Override   public void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.activity_main);       setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);             getWindow().setFormat(PixelFormat.UNKNOWN);       surfaceView = (SurfaceView)findViewById(R.id.camerapreview);       surfaceHolder = surfaceView.getHolder();       surfaceHolder.addCallback(this);       surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);             controlInflater = LayoutInflater.from(getBaseContext());       View viewControl = controlInflater.inflate(R.layout.control, null);       LayoutParams layoutParamsControl        = new LayoutParams(LayoutParams.FILL_PARENT,        LayoutParams.FILL_PARENT);       this.addContentView(viewControl, layoutParamsControl);             buttonTakePicture = (Button)findViewById(R.id.takepicture);             LinearLayout layoutBackground = (LinearLayout)findViewById(R.id.background);             prompt = (TextView)findViewById(R.id.prompt);   }     FaceDetectionListener faceDetectionListener   = new FaceDetectionListener(){  @Override  public void onFaceDetection(Face[] faces, Camera camera) {      if (faces.length == 0){    prompt.setText(" No Face Detected! ");   }else{    prompt.setText(String.valueOf(faces.length) + " Face Detected :) ");    Log.i("faceScore", faces[0].score+"");    Point leftEye = faces[0].leftEye;    //    leftEye       }        }};     @Override public void surfaceChanged(SurfaceHolder holder, int format, int width,   int height) {//  // TODO Auto-generated method stub  if(previewing){   camera.stopFaceDetection();   camera.stopPreview();   previewing = false;  }    if (camera != null){   try {    camera.setPreviewDisplay(surfaceHolder);    camera.startPreview();    prompt.setText(String.valueOf(      "Max Face: " + camera.getParameters().getMaxNumDetectedFaces()));    camera.startFaceDetection();    previewing = true;   } catch (IOException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }  } } @Override public void surfaceCreated(SurfaceHolder holder) {  // TODO Auto-generated method stub  camera = Camera.open(CameraInfo.CAMERA_FACING_FRONT);  camera.setFaceDetectionListener(faceDetectionListener); } @Override public void surfaceDestroyed(SurfaceHolder holder) {  // TODO Auto-generated method stub  camera.stopFaceDetection();  camera.stopPreview();  camera.release();  camera = null;  previewing = false; }  Camera.FaceDetectionListener faceDetionListener = new Camera.FaceDetectionListener() {@Overridepublic void onFaceDetection(Face[] faces, Camera camera) {// TODO Auto-generated method stub}};}