Android ICS API 14 - Camera.Face人脸识别

时间:2012-09-05 09:40:23

标签: android face-recognition

尝试在Camera.Face类中使用Android 4 API 14面部识别。

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

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

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

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

此行为在documentation中描述为

  

这是一个可选字段,可能并非所有设备都支持。如果不受支持,则该值将始终设置为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();
        }
    }

1 个答案:

答案 0 :(得分:1)

在初始化代码中,您需要为摄像头设置面部检测侦听器。