我无法用 camera2 检测到人脸

Posted

技术标签:

【中文标题】我无法用 camera2 检测到人脸【英文标题】:I can't detect face with camera2 【发布时间】:2016-07-26 04:48:25 【问题描述】:

我在 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】:

我认为你不能使用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 进行人脸检测

【讨论】:

以上是关于我无法用 camera2 检测到人脸的主要内容,如果未能解决你的问题,请参考以下文章

camera2人脸检测回调

使用 Android Camera2 API 进行人脸检测和画圆

需要在使用 MLKit 和 Camera2 进行人脸检测期间捕获静止图像

Android原生人脸识别Camera2示例

Android camera2.params.face 矩形放置在画布上

CameraDevice 无法创建会话 [Camera2]