我无法用camera2检测到脸部

时间:2016-04-06 01:45:09

标签: java android camera2

我无法在android.hardware.Camera2中找到有关预览面部检测的信息,有人会帮我一个完整的例子吗?

我在github中看到了一些关于camera2示例的问题,但我无法理解它们。

我使用了Google的Camera2示例:https://github.com/googlesamples/android-Camera2Basic

我将脸部识别模式设置为FULL。

mPreviewRequestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE, CameraMetadata.STATISTICS_FACE_DETECT_MODE_FULL);

我还检查了STATISTICS_INFO_MAX_FACE_COUNTSTATISTICS_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); 
 Output: maxCount : 5 , modes : [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);
}     `

输出:面部:0,模式:2

public static final int STATISTICS_FACE_DETECT_MODE_FULL = 2; 

脸部长度始终为0.看起来它无法正确识别脸部或我遗漏了某些东西。

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

我需要在camera2的预览中检测到脸部!

1 个答案:

答案 0 :(得分:0)

我认为您不能使用 CameraMetadata.STATISTICS_FACE_DETECT_MODE_FULL ,因为某些设备不支持此类人脸检测。请,您可以验证您的设备是否支持 STATISTICS_FACE_DETECT_MODE_FULL

如果答案为“否”,请尝试使用 STATISTICS_FACE_DETECT_MODE_SIMPLE

看看这个三星的例子 https://developer.samsung.com/galaxy/camera#techdocs

有一个样本说明如何通过camera2 API使用人脸检测