Android人脸检测汇总Media-FaceDetection

基于android.media.FaceDetector的静态人脸检测

使用android.media.FaceDetector可以对图片中的人脸进行检测,此API的不足之处由一下使用代码可见,只能识别人脸眼睛中点Point和眼睛之间的距离,再无其他识别,请大家根据实际需求选择和使用,曾经在相机中抓取数据流,转换成bitmap试过,由于内存有限发现卡顿现象严重

import android.media.FaceDetector;  //人脸识别的关键类  
import android.media.FaceDetector.Face;  

int numberOfFace = 5;
BitmapFactory.Options option = new BitmapFactory.Options();  
option.inPreferredConfig = Bitmap.Config.RGB_565;  //构造位图生成的参数,必须为565。类名+enum

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ddd, BitmapFactoryOptionsbfo);
FaceDetector.Face[] faces = new FaceDetector.Face[numberOfFace]; //分配人脸数组空间 
FaceDetector detector= new FaceDetector(bitmap.getWidth(), bitmap.getHeight(), numberOfFace);
int numberOfFaceDetected = detector.findFaces(myBitmap, myFace);    //FaceDetector 构造实例并解析人脸,返回实际检测人脸个数

for(int i=0; i < numberOfFaceDetected; i++){  
    Face face = faces[i];  
    PointF point = new PointF();  
    face.getMidPoint(point);  //获取眼睛中点
    int eyesDistance = face.eyesDistance();   //得到人脸中心点和眼间距离参数,并对每个人脸进行画框  
    canvas.drawRect(            //矩形框的位置参数  
            (int)(myMidPoint.x - myEyesDistance),  
            (int)(myMidPoint.y - myEyesDistance),  
            (int)(myMidPoint.x + myEyesDistance),  
            (int)(myMidPoint.y + myEyesDistance),  
            myPaint);  
}