Android camera2人脸识别

p37*_*td8 21 android face-recognition face-detection android-camera

关于camera2人脸识别机制的信息不足.我使用了Google的Camera2示例: android-Camera2Basic

我将人脸识别模式设置为FULL.

mPreviewRequestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE,
                                    CameraMetadata.STATISTICS_FACE_DETECT_MODE_FULL);
Run Code Online (Sandbox Code Playgroud)

我也查了一下

STATISTICS_INFO_MAX_FACE_COUNT并且STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES:

int max_count = characteristics.get(
CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT);
int modes [] = characteristics.get(
CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES);
Run Code Online (Sandbox Code Playgroud)

输出:maxCount:5,模式:[0,2]

我的CaptureCallback:

 private CameraCaptureSession.CaptureCallback mCaptureCallback
 = new CameraCaptureSession.CaptureCallback() {

    private void process(CaptureResult result) {
                Integer mode = result.get(CaptureResult.STATISTICS_FACE_DETECT_MODE);
                Face [] faces = result.get(CaptureResult.STATISTICS_FACES);
                if(faces != null && mode != null)
                    Log.e("tag", "faces : " + faces.length + " , mode : " + mode ); 
    }

    @Override
    public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request,
                                    CaptureResult partialResult) {
        process(partialResult);
    }

    @Override
    public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request,
                                   TotalCaptureResult result) {
        process(result);
    }
Run Code Online (Sandbox Code Playgroud)

输出:面:0,模式:2

 public static final int STATISTICS_FACE_DETECT_MODE_FULL = 2;
Run Code Online (Sandbox Code Playgroud)

面部长度始终为0.看起来它不能正确识别面部或我错过了什么.

我知道FaceDetector的方法.我只是想检查它是如何使用新的camera2 Face.

p37*_*td8 0

我的尝试是在 android 5.0(API 21) 上进行的。更新到 5.1(API 22)后,无需更改代码即可开始工作。