Android:FaceDetector不起作用。 findface总是检测到零面;

时间:2012-11-15 17:00:34

标签: android bitmap face-detection

我在使用android.media.FaceDetector的Android中遇到了人脸检测问题 我试图使用此代码检测面部:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig =  Bitmap.Config.RGB_565;
Bitmap b = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/myimage.jpg", options);
FaceDetector fd = new FaceDetector(b.getWidth(), b.getHeight(), 1);
Face[] face = new Face[1];
int detected_face = fd.findFaces(b, face);

detected_face它始终为0;

我尝试使用不同的图像,但收到了相同的结果。 有人可以解释一下我的代码有什么问题吗?

问候

1 个答案:

答案 0 :(得分:8)

下面的代码对我有用,而且我记得照片上的面孔必须是直立的,这意味着如果在图片中一个人站在他的头上,那么你必须将位图旋转180度才能将它送到不会检测到FaceDetector或他的脸部。

private void detectFaces() {
    int max = 5;
    BitmapFactory.Options bfo = new BitmapFactory.Options();
    bfo.inPreferredConfig = Bitmap.Config.RGB_565;
    bfo.inScaled = false;
    bfo.inDither = false;
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.myphoto, bfo);
    int w = bitmap.getWidth();
    int h = bitmap.getHeight();
    FaceDetector fd = new FaceDetector(w, h, max);
    Face[] faces = new Face[max];
    int c = fd.findFaces(bitmap, faces);
    for (int i=0;i<c;i++) {
        Log.d("TAG", Float.toString(faces[i].eyesDistance()));
    }
}