6

尝试使用 Camera.Face 类中的 Android 4 API 14 人脸识别。

我很难获取面部坐标 [左/右眼、嘴巴] 的值。

我使用的设备是三星 Galaxy Tab 2 [GT-P5100] 与 Android 4.0.4

我正在初始化面部检测,类似于下面的代码片段,并且在上述设备上运行时, camera.getParameters().getMaxNumDetectedFaces()的值返回为 3。

现在,当人脸被引入到表面框架并在人脸检测侦听器中检测到时,它会返回faces[0].rect.flattenToString()中的值来识别人脸在表面上的位置。然而,其余的值,即面部 ID、左/右眼和嘴巴分别返回为 -1 和 Null。

此行为在文档中描述为

这是一个可选字段,可能并非所有设备都支持。如果不支持,该值将始终设置为 null。可选字段被支持为一组。它们要么都是有效的,要么都不是。

所以问题是我是否遗漏了什么,或者仅仅是我的设备不支持在 Camera.Face 中找到的 Android api 人脸识别?

值得一提的是,同一设备提供人脸登录设备,这是通过用户设置进行配置的。

    FaceDetectionListener faceDetectionListener = new FaceDetectionListener(){

    @Override
    public void onFaceDetection(Face[] faces, Camera camera) {

        if (faces.length == 0){
            prompt.setText(" No Face Detected! ");
        }else{
            prompt.setText(String.valueOf(faces.length) + " Face Detected :) [ "
                    + faces[0].rect.flattenToString()
                    + "Coordinates : Left Eye - " + faces[0].leftEye + "]"
            ) ;
            Log.i("TEST", "face coordinates = Rect :" + faces[0].rect.flattenToString());
            Log.i("TEST", "face coordinates = Left eye : " + String.valueOf(faces[0].leftEye));
            Log.i("TEST", "face coordinates = Right eye - " + String.valueOf(faces[0].rightEye));
            Log.i("TEST", "face coordinates = Mouth - " + String.valueOf(faces[0].mouth));
        }

......

        if (camera != null){
        try {
            camera.setPreviewDisplay(surfaceHolder);
            camera.startPreview();

            prompt.setText(String.valueOf(
                    "Max Face: " + camera.getParameters().getMaxNumDetectedFaces()));
            camera.startFaceDetection();
            previewing = true;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
4

1 回答 1

1

在您的初始化代码中,您需要为相机设置人脸检测侦听器。

于 2012-09-11T04:01:04.007 回答