Nexus 5 Camera.Face对象是否为空?

时间:2014-03-05 01:51:00

标签: java android camera face-detection

这是我的code on gist

此相机应用遵循Android Official Guide

我的设备是带有kikat 4.4.2的Nexus 5

    @Override
    public void onFaceDetection(Camera.Face[] faces, Camera camera) {
      if (faces.length > 0){
        Camera.Face f = faces[0];
        Log.v(TAG, ("Detected" + faces.length + "faces,the ID of first face is:" + f.id ));

        Log.v(TAG, "leftEye : " + f.leftEye);
        Log.v(TAG, "mouth   : " + f.mouth);
        Log.v(TAG, "rect    : " + f.rect);
        Log.v(TAG, "rightEye: " + f.rightEye);

        mCamera.stopFaceDetection();
    }
}

检测到人脸时代码上方的输出是:

Detected 1 faces,the ID of first face is:-1
FaceActivity﹕ leftEye : null
FaceActivity﹕ mouth   : null
FaceActivity﹕ rect    : Rect(-393, 356 - -213, 676)
FaceActivity﹕ rightEye: null

所以,我想知道我的Nexus 5是否支持FaceDetect?如果没有,它怎么能用Face Unlock实现Screen Lock?

1 个答案:

答案 0 :(得分:1)

我发现了这个问题的原因。这都是关于RGB_564的。 Android有一个API来识别人脸,但只支持RGB_564个位图。人脸检测是一项成本非常高的行动。因此,默认情况下,相机的FaceDetect功能仅识别基本面部信息,这就是face.leftEye为空的原因。