使用android.hardware.Camera2进行人脸检测

使用android.hardware.Camera2进行人脸检测,android,android-5.1.1-lollipop,android-camera2,Android,Android 5.1.1 Lollipop,Android Camera2,我正在使用 我将人脸识别模式设置为完全 ´mPreviewRequestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE, CameraMetadata.STATISTICS\u FACE\u DETECT\u MODE\u FULL) 我的CaptureCallback: private CameraCaptureSession.CaptureCallback mCaptureCallback = new CameraCapture

我正在使用

我将人脸识别模式设置为完全

´mPreviewRequestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE,
CameraMetadata.STATISTICS\u FACE\u DETECT\u MODE\u FULL)

我的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);
}
输出:面:0,模式:2


面长度始终为0。看起来它不能正确识别一张脸,或者我错过了什么

您应该使用以下方法读取设备可用的人脸检测模式:

CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
for (String cameraId : manager.getCameraIdList()) {
    CameraCharacteristics characteristics
                    = manager.getCameraCharacteristics(cameraId);
    int[] faceDetectModes = characteristics.get(CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES);
}
使用该整数数组中最大值的索引,因为
0
表示
统计面检测模式关闭
1
表示
统计面检测模式简单
2
表示
统计面检测模式完整

您的设备可能返回0或1。如果是这样的话,“简单人脸检测”将不得不做,而不是“完整”


如果这仍然没有帮助,请检查您使用的是前置摄像头还是后置摄像头,然后尝试使用另一个摄像头(您提到的示例源代码在如何实现这一点上非常简单)。

我这样做了,得到了值2,然后我这样做了
mPreviewRequestBuilder.set(CaptureRequest.STATISTICS\u FACE\u DETECT\u MODE,CameraMetadata.STATISTICS\u FACE\u DETECT\u MODE\u FULL)}
但输出为
faces:0;
我正在使用后置摄像头。